UISlider
的子类,它将变量拖动速度(如 iOS 上的 iPod 应用所示)添加到 UISlider
。
由 Ole Begemann 编写于 2011 年 1 月。
将 OBSlider.h
和 OBSlider.m
拷贝到您的项目,并在您使用 UISlider
的任何地方实例化一个 OBSlider
。如果您在 Interface Builder 中创建滑块,请在“身份”标签上将它的类设置为 OBSlider
。
滑块默认支持变量拖动速度。在您分配给 UIControlEventValueChanged
的动作方法中,您可以访问 scrubbingSpeed
变量以获取当前的拖动速度。scrubbingSpeed
是一个浮点数,其中 `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 许可证。您可以在您的商业和非商业项目中使用此代码。
谢谢!