ASValueTrackingSlider 0.12.1

ASValueTrackingSlider 0.12.1

测试已测试
语言语言 Obj-CObjective C
许可证 MIT
发布最后发布2016年9月

Al Skipp维护。




这是什么?

一个 UISlider 的子类,在易定制的弹出视图中显示实时值。

screenshot

如果您想为 UIProgressView 也实现相同的功能,请查看 ASProgressPopupView

功能

  • 实时更新 UISlider 值
  • 可定制的属性

    • textColor
    • font
    • popUpViewColor
    • popUpViewAnimatedColors - 当值变化时,弹出视图和 UISlider 轨迹颜色会动画化
    • popUpViewCornerRadius
    • popUpViewArrowLength
  • 设置自己的 NSNumberFormatter 来控制显示的值

  • 可选的数据源 - 将自定义文本提供给 popUpView 标签
  • 自然弹性的动画效果

需要哪些文件?

对于 CocoaPods 用户,只需将 pod 'ASValueTrackingSlider' 添加到 Podfile 中。如果您想在不包含自己的作品之前测试所包含的演示项目,请在终端中输入 $ pod try ASValueTrackingSlider。CocoaPods 会将演示项目下载到临时文件夹,并在 Xcode 中打开它。神奇。

如果您不使用 CocoaPods,只需将这些文件包含到您的项目中即可

  • ASValueTrackingSlider (.h .m)
  • ASValuePopUpView (.h .m)

如何使用它

非常简单。将 UISlider 拖拽到 Storyboard/nib 中,将其类设置为 ASValueTrackingSlider – 就是这么简单。下面的例子演示了如何自定义外观和显示的值。

self.slider.maximumValue = 255.0;
self.slider.popUpViewCornerRadius = 12.0;
[self.slider setMaxFractionDigitsDisplayed:0];
self.slider.popUpViewColor = [UIColor colorWithHue:0.55 saturation:0.8 brightness:0.9 alpha:0.7];
self.slider.font = [UIFont fontWithName:@"GillSans-Bold" size:22];
self.slider.textColor = [UIColor colorWithHue:0.55 saturation:1.0 brightness:0.5 alpha:1];

screenshot

NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setNumberStyle:NSNumberFormatterPercentStyle];
[self.slider setNumberFormatter:formatter];
self.slider.popUpViewAnimatedColors = @[[UIColor purpleColor], [UIColor redColor], [UIColor orangeColor]];
self.slider.font = [UIFont fontWithName:@"Futura-CondensedExtraBold" size:26];

screenshot

popUpView 会自动调整,以确保其宽度不超过滑块控件宽度。

如何在 popUpView 标签中使用自定义字符串

将您的控制器设置为 ASValueTrackingSlider 的 dataSource 并采用 ASValueTrackingSliderDataSource,然后返回您想要自定义的任何值的 NSString。

// slider has a custom NSNumberFormatter to display temperature in °C
// the dataSource method below returns custom NSStrings for specific values
- (NSString *)slider:(ASValueTrackingSlider *)slider stringForValue:(float)value;
{
    value = roundf(value);
    NSString *s;
    if (value < -10.0) {
        s = @"❄️Brrr!⛄️";
    } else if (value > 29.0 && value < 50.0) {
        s = [NSString stringWithFormat:@"😎 %@ 😎", [slider.numberFormatter stringFromNumber:@(value)]];
    } else if (value >= 50.0) {
        s = @"I’m Melting!";
    }
    return s;
}

screenshot

如何与 UITableView 一起使用

要在UITableView内部有效使用,您需要实现<ASValueTrackingSliderDelegate>协议。如果只是在UITableViewCell内嵌入ASValueTrackingSlider,那么弹出视图可能会被上面的cell遮挡。代理方法会在弹出视图出现之前通知您,以便您确保您的UITableViewCell被渲染在其他之上。

使用UITableView推荐的技术是创建一个实现代理方法的UITableViewCell子类。

 @interface SliderCell : UITableViewCell <ASValueTrackingSliderDelegate>
 @property (weak, nonatomic) IBOutlet ASValueTrackingSlider *slider;
 @end

 @implementation SliderCell
 - (void)awakeFromNib
 {
    self.slider.delegate = self;
 }

 - (void)sliderWillDisplayPopUpView:(ASValueTrackingSlider *)slider;
 {
    [self.superview bringSubviewToFront:self];
 }
 @end