初始化一个Slider
UISlider *slider = [[UISlider alloc]initWithFrame:CGRectMake(0, 400,320 , 20)];
创建完毕的同时我们要设置好滑块的范围,如果你没有设置,那么会使用默认的 0.0 到 1.0 之间的值。UISlider提供了两个属性来设置范围:mininumValue 和 maxinumValue:
改变UISlider的外观
slider.minimumValueImage = [UIImage imageNamed:@"设置slider左边的图片"];
slider.maximumValueImage = [UIImage imageNamed:@"设置slider右边的图片"];
//设置了会减小滚动区域的宽度,但整个slider的宽度不变
[slider setMinimumTrackImage:[UIImage imageNamed:@"设置滑轮左边的图片,最好宽度和slider一样"] forState:UIControlStateNormal];
[slider currentMinimumTrackImage
[slider setMaximumTrackImage:[UIImage imageNamed:@"设置滑轮左边的图片,最好宽度和slider一样"] forState:UIControlStateNormal];
[slider currentMaximumTrackImage
把蓝色的设置为MinimumTrackImage
把灰色的设置为MaximumTrackImage
可以加一个label用于显示value,在UISlider的行为的change方法里改变label.text属性
slider.minimumTrackTintColor = [UIColor redColor];
slider.maximumTrackTintColor = [UIColor redColor];
[slider thumbImageForState:UIControlStateNormal];
[slider setThumbImage:[UIImage imageNamed:@"设置滑轮样子的图片"] forState:UIControlStateHighlighte
slider.thumbTintColor = [UIColor redColor];//设置了滑轮的颜色如果设置了滑轮的样式图片就不会显示
你可以根据滑块的各种不同状态显示不同的图像。下面是可用状态:
UIControlStateNormal
UIControlStateHighlighte
UIControlStateDisabled
UIControlStateDisabled
UIControlStateSelected
四、显示控件
- [
parentView addSubview:myslider ];//添加到父视图 - 或
- [
self.navigationItem.titleView addSubview:myslider ];//添加到导航栏
五、读取控件值
六、通知
要想在滑块值改变时收到通知,可以用UIControl类的addTarget方法为UIControlEventValueChang
- [
mySlider addTarget:self action:@selector(sliderValueChanged:) forControlEventValueChan ged ];
- -
(void) sliderValueChanged:(id)sender{ -
UISlider* control = (UISlider*)sender; -
if(control == mySlider){ -
float value = control.value; -
-
} - }
这个通知最简单的一个实例就是实时显示滑块的值,很奇怪的苹果显示滑块的值是一个私有的API(setShowValue),私有就私有,大不了我不用就是。我们可以用一个UILabel来显示值,在每次触发上面的方法时改变label的值,不就可以实时显示了吗?当然我们可以做的不仅仅是这个,还有更多的 cool 事情可以去实现,就看你的手段与想象力了。
主要是UISlider跟换thumb 与 状态条 bar 的替换
// 跟换bar
[self.volumeSlider