一、创建
滑块是一个标准的UIControl。我们可以通过代码创建,如同开关(UISwitch)的宽与高都会被忽略一样滑块的高也会被忽略(但是宽度不会):
- UISlider* mySlider = [ [ UISlider alloc ] initWithFrame:CGRectMake(20.0,10.0,200.0,0.0) ];//高度设为0就好
二、设定范围与默认值
创建完毕的同时我们要设置好滑块的范围,如果你没有设置,那么会使用默认的 0.0 到 1.0 之间的值。UISlider提供了两个属性来设置范围:mininumValue 和 maxinumValue:
- mySlider.mininumValue = 0.0;//下限
- mySlider.maxinumValue = 50.0;//上限
- mySlider.value = 22.0;
三、两端添加图片
滑块可以在任何一段显示图像。添加图像后会导致滑动条缩短,所以记得要记得在创建的时候增加滑块的宽度来适应图像。
- [ mySlider setMininumTrackImage: [ UIImage applicationImageNamed:@"min.png" ] forState: UIControlStateNormal ];
- [ mySlider setMaxinumTrackImage: [ UIImage applicationImageNamed:@"max.png" ] forState: UIControlStateNormal ];
UIControlStateNormal
UIControlStateHighlighted
UIControlStateDisabled
UIControlStateDisabled
UIControlStateSelected
四、显示控件
- [ parentView addSubview:myslider ];//添加到父视图
- 或
- [ self.navigationItem.titleView addSubview:myslider ];//添加到导航栏
五、读取控件值
- float value = mySlider.value;
六、通知
要想在滑块值改变时收到通知,可以用UIControl类的addTarget方法为UIControlEventValueChanged事件添加一个动作。
- [ mySlider addTarget:self action:@selector(sliderValueChanged:) forControlEventValueChanged ];
- - (void) sliderValueChanged:(id)sender{
- UISlider* control = (UISlider*)sender;
- if(control == mySlider){
- float value = control.value;
- /* 添加自己的处理代码 */
- }
- }
- mySlider.continuous = YES ;
这个通知最简单的一个实例就是实时显示滑块的值,很奇怪的苹果显示滑块的值是一个私有的API(setShowValue),私有就私有,大不了我不用就是。我们可以用一个UILabel来显示值,在每次触发上面的方法时改变label的值,不就可以实时显示了吗?当然我们可以做的不仅仅是这个,还有更多的 cool 事情可以去实现,就看你的手段与想象力了。