优秀工程师-UISlider

来源:互联网 发布:成都大数据协会 编辑:程序博客网 时间:2024/06/05 07:46

1、直接上代码:


  1. // 创建滑动条slider  
  2. UISlider *slider = [[UISlider alloc] initWithFrame:CGRectMake((SCREENWIDTH - 150) / 220015020)];  
  3. [self.view addSubview:slider];  
这里要注意的一点是,滑动条的高度,如果设为0,其实还是会正常显示。但是!一旦高度设为0,滑动条将不能左右滑动!

其他属性设置:

  1.   slider.minimumValue = 9;// 设置最小值  
  2.   slider.maximumValue = 11;// 设置最大值  
  3.   slider.value = (slider.minimumValue + slider.maximumValue) / 2;// 设置初始值  
  4.   slider.continuous = YES;// 设置可连续变化  
  5.   slider.minimumTrackTintColor = [UIColor greenColor]; //滑轮左边颜色,如果设置了左边的图片就不会显示  
  6.   slider.maximumTrackTintColor = [UIColor redColor]; //滑轮右边颜色,如果设置了右边的图片就不会显示  
  7.   slider.thumbTintColor = [UIColor redColor];//设置了滑轮的颜色,如果设置了滑轮的样式图片就不会显示  
  8.   [slider addTarget:self action:@selector(sliderValueChanged:) forControlEvents:UIControlEventValueChanged];// 针对值变化添加响应方法  
  9.   [self.view addSubview:slider];  
如上所示,在代码中,我们设置了最大值、最小值、当前值。也可以改变滑动条左边、右边一集滑块本身的颜色,不过我们这里采用默认的设置,更改方法代码中也写了。除了可以设置颜色外,还可以设置最大最小值处的图片。

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

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

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

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

[objc] view plain copy
  1. // 当前值label  
  2. self.valueLabel = [[UILabel alloc] initWithFrame:CGRectMake((SCREENWIDTH - 100) / 2, slider.frame.origin.y + 3010020)];  
  3. self.valueLabel.textAlignment = NSTextAlignmentCenter;  
  4. self.valueLabel.text = [NSString stringWithFormat:@"%.1f", slider.value];  
  5. [self.view addSubview:self.valueLabel];  
  6.   
  7. // 最小值label  
  8. UILabel *minLabel = [[UILabel alloc] initWithFrame:CGRectMake(slider.frame.origin.x - 35, slider.frame.origin.y3020)];  
  9. minLabel.textAlignment = NSTextAlignmentRight;  
  10. minLabel.text = [NSString stringWithFormat:@"%.1f", slider.minimumValue];  
  11. [self.view addSubview:minLabel];  
  12.   
  13. // 最大值label  
  14. UILabel *maxLabel = [[UILabel alloc] initWithFrame:CGRectMake(slider.frame.origin.x + slider.frame.size.width + 5, slider.frame.origin.y3020)];  
  15. maxLabel.textAlignment = NSTextAlignmentLeft;  
  16. maxLabel.text = [NSString stringWithFormat:@"%.1f", slider.maximumValue];  
  17. [self.view addSubview:maxLabel];  

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

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

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

原创粉丝点击