CPSlider 1.1.1

CPSlider 1.1.1

测试已测试
Lang语言 Obj-CObjective C
许可证 MIT
发布上次发布2015年5月

Charles Powell维护。



CPSlider 1.1.1

  • 作者:
  • Charles Powell

描述

CPSlider是一个简化的、 UISlider的子类替换,允保修铲速度随用户从滑块滑块拖动而变化,模仿了iOS iPod音乐播放器中的滑块。它还包括委托回调,允许对象在刮擦速度变化时得到通知。

CPSlider的创建是因为我找到的唯一其他实现是Ole Begemann的OBSlider,虽然质量很高,但在我的奇怪的用例中(从细刮擦速度开始,然后用户拉动时增加到1.0x),有点问题。我还想看看是否有一种不同的方法可以实现这一点,而不需要执行基于各种滑块和轨道框架的重置计算。

用法

一般

创建一个像正常UISlider一样的CPSlider

CPSlider *slider = [[CPSlider alloc] initWithFrame:CGRectMake(18, 166, 284, 23)];
slider.minimumValue = 0.0f;
slider.maximumValue = 1.0f;
[self.view addSubview:slider]
[self.slider addTarget:self action:@selector(sliderValueDidChange:) forControlEvents:UIControlEventValueChanged];

然后您需要设置一个包含应当更改刮擦速度的Y位置的数组。这些是距离滑块边框中心线的Y位置,以点为单位(正数或负数)。它们应该是顺序增加的,并封装在NSNumber对象中。

slider.scrubbingSpeedPositions = [NSArray arrayWithObjects:
                                   [NSNumber numberWithInt:0],
                                   [NSNumber numberWithInt:50], 
                                   [NSNumber numberWithInt:125],
                                   [NSNumber numberWithInt:175], nil];

然后将刮擦速度以类似的方式设置。这是滑块相对于用户触摸点X位置变化的速度。典型值将是0.0到1.0,虽然大于1.0也是可能的。再次,这些也应该封装在NSNumber中。

slider.scrubbingSpeeds = [NSArray arrayWithObjects:
                           [NSNumber numberWithFloat:1.0f],
                           [NSNumber numberWithFloat:0.5f],
                           [NSNumber numberWithFloat:0.25f],
                           [NSNumber numberWithFloat:0.1f], nil];

如果需要,可以设置委托,以及两个外部选项。

slider.delegate = self;
slider.accelerateWhenReturning = YES;  // Defaults to YES, see CPSlider.h for info
slider.ignoreDraggingAboveSlider = YES; // Defaults to YES, see CPSlider.h for info

然后可以实现一个或两个委托方法。

- (void)slider:(CPSlider *)slider didChangeToSpeed:(CGFloat)speed whileTracking:(BOOL)tracking {
    // Do something with the speed change
    // 'tracking' is YES during touch and changes to NO on touch up
}

- (void)slider:(CPSlider *)slider didChangeToSpeedIndex:(NSUInteger)index whileTracking:(BOOL)tracking {
    // This version reports the index of the speed entry
}

待办事项

  • 有什么想法吗?

关于

Charles Powell

如果您在我的项目中使用它,请告诉我!