1、UISlider 的创建
// 高度不起作用,但不能为 0 ,为 0 时滑块无法滑动
UISlider *slider = [[UISlider alloc] initWithFrame:CGRectMake(20, 200, 300, 20)];
// 将 slider 添加到 view
[self.view addSubview:slider];
2、UISlider 的设置
// 设置最小和最大值
slider.minimumValue = 0;
slider.maximumValue = 100;
// 设置当前值
slider.value = 50;
[slider setValue:50 animated:YES];
// 获取当前值
float value = slider.value;
// 设置滑块的颜色
/* 默认为白色 */
slider.thumbTintColor = [UIColor orangeColor];
// 设置滑过的进度条的颜色
/* 默认为蓝色 */
slider.tintColor = [UIColor redColor];
// 设置滑过的和未划过的进度条的颜色
/*
minimumTrackTintColor:滑过的进度条颜色,默认为蓝色
maximumTrackTintColor:未划过的进度条颜色,默认为灰色
*/
slider.minimumTrackTintColor = [UIColor greenColor];
slider.maximumTrackTintColor = [UIColor redColor];
// 设置滑块的图片
[slider setThumbImage:[UIImage imageNamed:@"hehe"] forState:UIControlStateNormal];
[slider setThumbImage:[UIImage imageNamed:@"hihi"] forState:UIControlStateHighlighted];
// 设置滑过的和未划过的进度条的图片
[slider setMinimumTrackImage:[UIImage imageNamed:@"pic1"] forState:UIControlStateNormal];
[slider setMaximumTrackImage:[UIImage imageNamed:@"pic2"] forState:UIControlStateNormal];
// 设置左右两端的图片
slider.minimumValueImage = [UIImage imageNamed:@"volum-"];
slider.maximumValueImage = [UIImage imageNamed:@"volum+"];
// 设置为纵向
// 顺时针旋转 90 度,90/180 * M_PI,1 度 = PI/180 弧度
slider.transform = CGAffineTransformMakeRotation(0.5 * M_PI);
// 逆时针旋转 90 度,270/180 * M_PI,1 度 = PI/180 弧度
slider.transform = CGAffineTransformMakeRotation(1.5 * M_PI);
// 获取当前值
UIImage *thumbImage = slider.currentThumbImage; // 获取当前滑块的图片值
UIImage *minimumTrackImage = slider.currentMinimumTrackImage; // 获取当前滑过的进度条的图片值
UIImage *maximumTrackImage = slider.currentMaximumTrackImage; // 获取当前未滑过的进度条的图片值
// 添加点击触发事件
/* UISlider 继承于 UIControl,可以对 UISlider 添加触发事件
UISlider作为进度条一直为我们所使用,如果想获取变化的值,通过UIControlEventValueChanged即可获取,但是如果想获取滑动开始和结束的事件需要另外两个事件: */
[slider addTarget:self action:@selector(sliderProgressChange:) forControlEvents:UIControlEventValueChanged];
[slider addTarget:self action:@selector(sliderTouchDown:) forControlEvents:UIControlEventTouchDown];
[slider addTarget:self action:@selector(sliderTouchUpInSide:) forControlEvents:UIControlEventTouchUpInside];
3、UISlider 透明化处理
- 经过处理后的 UISlider 就只能看到中间的 ThumbImage 了,而 ThumbImage 左右的颜色都变成透明的。之后可以再设置上颜色等。
UIGraphicsBeginImageContextWithOptions(CGSizeMake(1, 1), NO, 0.0f);
UIImage *transparentImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
[slider setMinimumTrackImage:transparentImage forState:UIControlStateNormal];
[slider setMaximumTrackImage:transparentImage forState:UIControlStateNormal];