iOS滑动条UISlider的使用方法

由于项目的需求,学习使用了一下滑动条UISlider的使用方法,这里记录一下。


首先看我们实现出来的效果:


如上图所示,在图中有四个内容:滑动条本身、最小值label、最大值label、当前值label。

随着滑动条的左右滑动,中间的当前值label会跟着做出变化。


现在看看怎么实现的:

1.首先我们要创建滑动条,这是肯定的,创建代码如下:

    // 滑动条slider
    UISlider *slider = [[UISlider alloc] initWithFrame:CGRectMake((SCREENWIDTH - 150) / 2, 200, 150, 20)];
    [self.view addSubview:slider];

我是用纯代码创建的,当然也可以直接在storyboard中拖一个到界面上,那样其实很简单,就不说了。

宽度我用了一个自定义的屏幕宽度常量。这里要注意的一点是,滑动条的高度,如果设为0,其实还是会正常显示。但是!一旦高度设为0,滑动条将不能左右滑动!我就入过这个坑。。。找了半天没找到原因,最终发现是这里的问题。

当然我们还仅仅定义了滑动条的位置,还有很多属性没有定义,我们接着设置:

    // 滑动条slider
    UISlider *slider = [[UISlider alloc] initWithFrame:CGRectMake((SCREENWIDTH - 150) / 2, 200, 150, 20)];
    slider.minimumValue = 9;// 设置最小值
    slider.maximumValue = 11;// 设置最大值
    slider.value = (slider.minimumValue + slider.maximumValue) / 2;// 设置初始值
    slider.continuous = YES;// 设置可连续变化
//    slider.minimumTrackTintColor = [UIColor greenColor]; //滑轮左边颜色,如果设置了左边的图片就不会显示
//    slider.maximumTrackTintColor = [UIColor redColor]; //滑轮右边颜色,如果设置了右边的图片就不会显示
//    slider.thumbTintColor = [UIColor redColor];//设置了滑轮的颜色,如果设置了滑轮的样式图片就不会显示
    [slider addTarget:self action:@selector(sliderValueChanged:) forControlEvents:UIControlEventValueChanged];// 针对值变化添加响应方法
    [self.view addSubview:slider];

如上所示,在代码中,我们设置了最大值、最小值、当前值。也可以改变滑动条左边、右边一集滑块本身的颜色,不过我们这里采用默认的设置,更改方法代码中也写了。除了可以设置颜色外,还可以设置最大最小值处的图片。

现在我们注意一个设置:slider.continuous = YES; 这个设置有什么用呢?设为YES后,我们才能在拖动滑块的过程中持续获取其值变更事件,如果是NO,则只有在滑动停止时才会获取变更事件。

这个变更事件又是什么呢?我们只是对一个按钮设置响应方法的时候,设置的响应事件是Touch up inside。在滑动条中,相对应的就是ValueChanged。所以我们设置响应方法时,也是针对的这个方法。


2.滑动条创建完毕后,接着创建那三个label:

创建labelde代码很常见,这里就直接贴出来了:

    // 当前值label
    self.valueLabel = [[UILabel alloc] initWithFrame:CGRectMake((SCREENWIDTH - 100) / 2, slider.frame.origin.y + 30, 100, 20)];
    self.valueLabel.textAlignment = NSTextAlignmentCenter;
    self.valueLabel.text = [NSString stringWithFormat:@"%.1f", slider.value];
    [self.view addSubview:self.valueLabel];
    
    // 最小值label
    UILabel *minLabel = [[UILabel alloc] initWithFrame:CGRectMake(slider.frame.origin.x - 35, slider.frame.origin.y, 30, 20)];
    minLabel.textAlignment = NSTextAlignmentRight;
    minLabel.text = [NSString stringWithFormat:@"%.1f", slider.minimumValue];
    [self.view addSubview:minLabel];
    
    // 最大值label
    UILabel *maxLabel = [[UILabel alloc] initWithFrame:CGRectMake(slider.frame.origin.x + slider.frame.size.width + 5, slider.frame.origin.y, 30, 20)];
    maxLabel.textAlignment = NSTextAlignmentLeft;
    maxLabel.text = [NSString stringWithFormat:@"%.1f", slider.maximumValue];
    [self.view addSubview:maxLabel];

这里值得注意的是,我们label的值并不是直接定义的,而是获取滑动条的最大、最小、当前值,然后取小数点前一位显示的,因为滑动条是连续变化的,其值是浮点型的连续小数,如果不取小数点后的位数,得到的将是没有规律的小数。


3.现在来看拖动滑动条时的响应方法:

我们要做到的是当前值的label显示的内容随着滑动条的滑动而变化,那么只需要在滑动条的响应方法中设置label的显示内容就可以了,注意同样要取小数点前一位:

// slider变动时改变label值
- (void)sliderValueChanged:(id)sender {
    UISlider *slider = (UISlider *)sender;
    self.valueLabel.text = [NSString stringWithFormat:@"%.1f", slider.value];
}

因为我们continuous设为了YES,所以显示的当前值会随着拖动实时改变。


以上,就是滑动条的使用方法了。

这是我的示例工程:https://github.com/Cloudox/SliderDemo

版权所有:http://blog.csdn.net/Cloudox_

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
机器学习是一种人工智能(AI)的子领域,致力于研究如何利用数据和算法让计算机系统具备学习能力,从而能够自动地完成特定任务或者改进自身性能。机器学习的核心思想是让计算机系统通过学习数据中的模式和规律来实现目标,而不需要显式地编程。 机器学习应用非常广泛,包括但不限于以下领域: 图像识别和计算机视觉: 机器学习在图像识别、目标检测、人脸识别、图像分割等方面有着广泛的应用。例如,通过深度学习技术,可以训练神经网络来识别图像中的对象、人脸或者场景,用于智能监控、自动驾驶、医学影像分析等领域。 自然语言处理: 机器学习在自然语言处理领域有着重要的应用,包括文本分类、情感分析、机器翻译、语音识别等。例如,通过深度学习模型,可以训练神经网络来理解和生成自然语言,用于智能客服、智能助手、机器翻译等场景。 推荐系统: 推荐系统利用机器学习算法分析用户的行为和偏好,为用户推荐个性化的产品或服务。例如,电商网站可以利用机器学习算法分析用户的购买历史和浏览行为,向用户推荐感兴趣的商品。 预测和预测分析: 机器学习可以用于预测未来事件的发生概率或者趋势。例如,金融领域可以利用机器学习算法进行股票价格预测、信用评分、欺诈检测等。 医疗诊断和生物信息学: 机器学习在医疗诊断、药物研发、基因组学等领域有着重要的应用。例如,可以利用机器学习算法分析医学影像数据进行疾病诊断,或者利用机器学习算法分析基因数据进行疾病风险预测。 智能交通和物联网: 机器学习可以应用于智能交通系统、智能城市管理和物联网等领域。例如,可以利用机器学习算法分析交通数据优化交通流量,或者利用机器学习算法分析传感器数据监测设备状态。 以上仅是机器学习应用的一部分,随着机器学习技术的不断发展和应用场景的不断拓展,机器学习在各个领域都有着重要的应用价值,并且正在改变我们的生活和工作方式。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值