SPTScrollViewScrubber 1.0.0

SPTScrollViewScrubber 1.0.0

测试已测试
语言语言 Obj-CObjective C
许可 MIT
发布最后发布2014年12月

Unclaimed 维护。



  • 作者:
  • Tim Mecking (sptim)

关于

SPTScrollViewScrubberController 向 UIScrollView 实例或其任何子类添加一个卷尺以快速滚动查看大量内容。

它受到NSScreencast 第 97 集视频:Scrolling Nub (11/28/2013)的启发。

使用 SPTScrollViewScrubberController 与 UITableView

通过代码将卷尺添加到 UITableView 实例

添加卷尺到表格视图只需要两个步骤。

  1. 导入头文件,并在您的 UITableViewController 子类的属性中添加一个 SPTScrollViewScrubberController 实例的属性。

    @property (nonatomic,strong) SPTScrollViewScrubberController* scrubController;
    
  2. 在您的 -viewDidLoad 方法中实例化和设置 SPTScrollViewScrubberController 对象。

    self.scrubController=[[SPTScrollViewScrubberController alloc] init];
    self.scrubController.scrollView=self.tableView;
    self.tableView.delegate=self.scrubController;
    

UITableViewDelegate 方法

如果无法将 SPTScrollViewScrubberController 实例设置为表格视图的代理,您必须从您的表格视图代理(通常是 UITableViewController 子类)转发 3 个代理方法到卷尺控制器

-(void)scrollViewDidScroll:(UIScrollView*)scrollView {
    [self.scrubController scrollViewDidScroll:scrollView];
}
-(void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate {
    [self.scrubController scrollViewDidEndDragging:scrollView willDecelerate:decelerate];
}
 -(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {
    [self.scrubberController scrollViewDidEndDecelerating:scrollView];
}

卷尺视图

您很可能想使用一个自定义卷尺视图。为此,只需将 scrubberView 属性设置为 UIView 实例或其任何子类。该视图中不能有任何自绘约束。使用其 frame 或 center 属性定位和调整大小。

默认情况下,SPTScrollViewScrubberController 仅更改卷尺视图在拖动/滚动轴上的位置。与 UITableView 一起使用时,这始终是垂直轴(y 坐标)。

如果您在控制器上设置了 horizontalAlignment 属性,它还会在水平轴上定位 scrubberView。您可以选择将其固定在任何一边或滚动视图的中心。当 scrollView 的框架发生变化时,例如由于界面旋转,SPTScrollViewScrubberController 会根据情况相应地调整卷尺视图的位置。

使用 SPTScrollViewScrubberController 的 edgeInsets 属性可以使用边距配置,即滚动视图边缘和卷尺视图之间的空白空间。

如果表格视图的内容区域高度小于其内容区域高度的两倍,则卷尺视图将隐藏。内容区域是通过将内容偏移量应用到其边界来确定的。您可以调整卷尺将显示的最小因子,通过为您 SPTScrollViewScrubberController 实例设置 minimumVerticalScrollFactor 属性。该因子必须大于 1.0

视图转换 & 动画

滑块可以有三种状态

  • 未选中 / 未高亮

    这是空闲状态。默认情况下,滑块视图通过将其alpha值设置为0.3来淡出。

  • 选中 / 未高亮

    在任何滚动事件期间,滑块视图进入此状态。经过一段时间延迟后,它返回到上一个状态。在默认配置中,视图的alpha值设置为1.0。

  • 选中 / 高亮

    当用户触摸并保持滑块视图时,它处于此状态。在默认配置中,与上一个状态没有视觉上的区别。

在SPTScrollViewScrubberController中,有四个块属性用于配置视图转换

  1. @property (nonatomic,copy) void(^选高亮滑块视图)(UIView* view);

  2. @property (nonatomic,copy) void(^取消高亮滑块视图)(UIView* view);

  3. @property (nonatomic,copy) void(^选择滑块视图)(UIView* view);

  4. @property (nonatomic,copy) void(^取消选择滑块视图)(UIView* view);

每个都会带有指向滑块视图对象的指针作为参数。默认实现会设置滑块视图对象的相应属性,如果它响应设置选择器(-[setSelected:], -[setHighlighted:])。选择/取消选择块还会设置视图的alpha值,如上所述。

目前只有一个转换会被动画处理,即取消选择。动画速度由滑块控制器的取消选择动画持续时间属性配置。在滚动操作完成后,取消选择会延迟指定在取消选择延迟属性中的时间间隔。