级别:★☆☆☆☆
标签:「UISlider」「QiSlider」「UISlider自定义」
作者: Xs·H

项目中有个需求是在滑动slider的时候要在滑块上方实时显示数值,而且数值要跟着滑块动。实现效果如下:

在写代码之前有两个思路:

1、在slider的superView上add一个valueLabel,找到slider的滑块view(thumbView),在slider的valueChanged方法中根据thumbView相对于slider的superView的frame调整valudeLabel的frame和text。使用此思路实现的效果会出现滑动过快时label晃动的现象(有点跟不上滑块的意思)。

2、找到slider的thumbView,在thumbView上add一个valueLabel,在slider的valueChanged方法中调整valueLabel的text。 使用此思路实现的效果比较符合需求。

按照思路2自定义QiSlider部分代码如下:

#import "QiSlider.h"@interface QiSlider ()/*! @brief slider的thumbView */
@property (nonatomic, strong) UIView *thumbView;
/*! @brief 显示value的label */
@property (nonatomic, strong) UILabel *valueLabel;@end@implementation QiSlider- (instancetype)initWithFrame:(CGRect)frame {if (self = [super initWithFrame:frame]) {[self addTarget:self action:@selector(sliderValueChanged:) forControlEvents:UIControlEventValueChanged];}return self;
}#pragma mark - Setter functions- (void)setValueText:(NSString *)valueText {if (![_valueText isEqualToString:valueText]) {_valueText = valueText;self.valueLabel.text = valueText;[self.valueLabel sizeToFit];self.valueLabel.center = CGPointMake(self.thumbView.bounds.size.width / 2, -self.valueLabel.bounds.size.height / 2);if (!self.valueLabel.superview) {[self.thumbView addSubview:self.valueLabel];}}
}#pragma mark - Getter functions- (UIView *)thumbView {if (!_thumbView && self.subviews.count > 2) {_thumbView = self.subviews[2];}return _thumbView;
}- (UILabel *)valueLabel {if (!_valueLabel) {_valueLabel = [[UILabel alloc] initWithFrame:CGRectZero];_valueLabel.textColor = _valueTextColor ?: self.thumbTintColor;_valueLabel.font = _valueFont ?: [UIFont systemFontOfSize:14.0];_valueLabel.textAlignment = NSTextAlignmentCenter;}return _valueLabel;
}#pragma mark - Action functions- (void)sliderValueChanged:(QiSlider *)sender {if (_valueChanged) {_valueChanged(sender);} else {sender.valueText = [NSString stringWithFormat:@"%.1f", sender.value];}
}
@end
复制代码

工程代码可从QiSlider的Github库中获取

关注我们的途径有:
QiShare(简书)
QiShare(掘金)
QiShare(知乎)
QiShare(GitHub)
QiShare(CocoaChina)
QiShare(StackOverflow)
QiShare(微信公众号)


推荐文章:iOS Strong和Copy的区别

iOS UISlider数值与滑块联动相关推荐

  1. iOS UIslider 设定滑块的大小

    一般情况下,我们在用UIslider的时候,会发现默认的滑块不符合我们的UI需要,这个时候,我们需要修改它的大小,可以通过如下的方法 /*对原来的图片的大小进行处理@param image 要处理的图 ...

  2. iOS UISlider

    In this tutorial, we'll be discussing and implementing the UISlider in our iOS Application. 在本教程中,我们 ...

  3. iOS UISlider

    文章目录 UISlider常用属性与方法 使用:控制图片透明度 UISlider控件就是我们通常用于调节亮度,透明度,音量时会出现的滑动条.UISlider控件是通过滑块所处的位置来标识数值,它允许用 ...

  4. ios收货地址三级联动选择

    这次的需求,是省市区三级联动选择,并且市的选择要根据省的id,然后区的选择要根据市的id 每次都要进行网络请求,关键代码,其实是 //监听轮子的移动 - (void)pickerView:(UIPic ...

  5. IOS用标签显示滑块的值

    //用标签显示滑块的值 action动作的代码如下 1 - (IBAction)sliderValueChange:(id)sender { 2 UISlider *slider = (UISlide ...

  6. UISlider 滑动条-滑块大小、不能滑动、不能拖动

    2019独角兽企业重金招聘Python工程师标准>>> //滑动条UISlider* slider = [[UISlider alloc] initWithFrame:CGRectM ...

  7. iOS UIButton之UIEdgeInsets详解

    级别:★★☆☆☆ 标签:「UIButton内偏移量」「titleEdgeInsets」「imageEdgeInsets」 作者: MrLiuQ 审校: QiShare团队 我们先看一下苹果官方对UIE ...

  8. iOS strong和copy的区别

    级别: ★☆☆☆☆ 标签:「iOS」「NSString」「strong和copy」 作者: MrLiuQ 在iOS开发中,几乎每天都会遇到NSString属性的声明, 在ARC内存管理机制下, NSS ...

  9. iOS 9应用开发教程之使用开关滑块控件以及滚动部署视图

    iOS 9应用开发教程之使用开关滑块控件以及滚动部署视图 使用ios9中的开关.滑块控件 开关和滑块也是用于和用户进行交互的控件.本节将主要讲解这两种控件. ios9开关 开关控件常用来控制某个功能的 ...

最新文章

  1. mysql命令技巧_Mysql命令行技巧汇总
  2. 图像分割过分割和欠分割_使用图割的图像分割
  3. IdentityServer4密码模式
  4. ios 贝塞尔曲线 颜色填充_iOS贝塞尔曲线(UIBezierPath)的基本使用方法
  5. 全面解码美妆消费者心智
  6. 改善深层神经网络:超参数调整、正则化以及优化——2.7 RMSprop
  7. VS 工程只生成dll不生成lib的解决方案
  8. 史上最全的谷歌公司那些黑科技
  9. centos 下 docker 的 安装与使用 (一)
  10. es文件搜索不到win7服务器,ES文件浏览器Win7局域网共享错误解决方案
  11. 强学习器------随机森林
  12. 科技业10大错误决定
  13. R语言——符号函数(向量化)
  14. 网络姻缘一线牵 大数据精准推广才能让合适的产品遇到合适的人!
  15. 访问学者博士后面签后的几种情况?
  16. centos7搭建http代理ip TinyProxy 及验证是否有效(python)
  17. linux上传图片后无权限访问解决方案
  18. 一台服务器可以安装多个mysql数据库_在一台Linux服务器上安装多个MySQL实例(一)--使用mysqld_multi方式...
  19. 吃饱没事做之——爬楼梯题复杂化
  20. html中锚记标记的隐藏,在 Dreamweaver 中选择、查看和设置不可见元素 - Dreamweaver 用户指南...

热门文章

  1. 自动化代码部署、代码回滚、命令执行软件之capistrano
  2. Linux 查看内存插槽数、最大容量和频率
  3. Bluetooth handsfree 和 headset 区别
  4. EDEN-MACE 1.4.0 更新,增加数据清理功能
  5. 聊聊 Spring Boot 2.x 那些事儿
  6. UE4: 学习虚幻引擎4的16条准则
  7. mutable和volatile关键字
  8. Hadoop进阶之输入路径如何正则通配?
  9. 软件行业资本论[前言,第一节]
  10. redis aof命令缓冲区的写入源码