一个继承自 UISlider
的控件,为 UISlider
添加了可变快进/快退速度(如在 iOS 上的 iPod 应用中看到的那样)。
由 Ole Begemann 所著,2011年1月。
将 OBSlider.h
和 OBSlider.m
复制到您的项目中,并在您原本会使用 UISlider
的任何地方实例化一个 OBSlider
。如果您在 Interface Builder 中创建了滑块,请在“标识”选项卡上将它的类设置为 OBSlider
。
滑块可以自动使用可变快进/快退速度。在您分配给 UIControlEventValueChanged
的操作方法中,可以通过访问 scrubbingSpeed
变量来获取当前的快进/快退速度。 Scrubbing
快进/快退速度是一个
float,其中 1.0f 是正常快进/快退速度。
要修改用户触摸的垂直偏移位置处的快进/快退速度,可以修改 scrubbingSpeeds
和 scrubbingSpeedChangePositions
数组。这两个数组应包含相同数量的对象。scrubbingSpeedChangePositions
应该按顺序指示应发生快进/快退速度变化的垂直偏移量。此数组的第一个条目始终应该是 [NSNumber numberWithFloat:0.0f]
。scrubbingSpeeds
应包含与偏移量相对应的实际快进/快退速度值。
这两个数组的默认值如下
scrubbingSpeeds = [NSArray arrayWithObjects:
[NSNumber numberWithFloat:1.0f],
[NSNumber numberWithFloat:0.5f],
[NSNumber numberWithFloat:0.25f],
[NSNumber numberWithFloat:0.1f],
nil];
scrubbingSpeedChangePositions = [NSArray arrayWithObjects:
[NSNumber numberWithFloat:0.0f],
[NSNumber numberWithFloat:50.0f],
[NSNumber numberWithFloat:100.0f],
[NSNumber numberWithFloat:150.0f],
nil];
(即当用户将手指上下移动 50.0/100.0/150.0 个点时,快进/快退速度分别从 100% 变为 50%,再变为 25%,最后变为 10%)
OBSlider
1.0.0 (标记为 1.0.0) 适用于 iOS 3.0 及以上版本。
版本 1.1.0(标记为 1.1.0)已将源代码转换为自动引用计数(ARC),并将演示应用的部署目标提高到 iOS 5.0。如果您希望支持较早的 iOS 版本,请查看 1.0.0 标签。
在 Xcode 中打开演示项目 OBSliderDemo.xcodeproj
并在 iPhone 或 iPhone 模拟器上运行。拖动滑块,并在拖动过程中上下移动手指以调节快进/快退速度。
该类基本上未经过测试。请通过 GitHub 上的问题跟踪器报告错误。
在 MIT 许可证下发布。您可以在您的商业和非商业项目中使用此代码。
谢谢!