自定义UISlider
来源:互联网 发布:mac上可以玩什么网游 编辑:程序博客网 时间:2024/06/06 21:06
自定义UISlider
iOS的Slider控件可是常用的,在各种视频播放器,音乐播放器,图片查看器还有地图这些软件中可是非常常见的。
这是Xcode里自带的slider控件。但是很多情况下我们是需要对slider的外观根据需要进行调整,所以就会对slider进行自定义。
比如我们想把slider做成如下效果
来分析下这个图,slider有背景图,左侧划过的颜色和右侧没有划过的颜色不同的,关键是横条上面还悬浮着一列白点。这堆白点比较麻烦,当时花了我不少功夫,才突然想起来一中方法。待会代码会有提及。设置尺寸什么的我就不详说了。直接上代码。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
- (
void
)viewDidLoad {
[
super
viewDidLoad];
#pragma mark 设置滑动条
//时间滑动条参数准备
CGFloat slider_w = ScreenWidth * 0.95;
CGFloat slider_h = 70;
CGFloat slider_offX = (ScreenWidth - slider_w)/2;
CGFloat slider_offY = 20;
CGFloat slider_deltaX = slider_w * 0.09;
//slider的校正x值
//滑动条
UISlider *timeSlider = [[UISlider alloc] initWithFrame:CGRectMake(slider_offX + slider_deltaX, CGRectGetHeight(
self
.view.bounds) - slider_offY - slider_h - 3, slider_w - 2 * slider_deltaX, slider_h)];
//滑动条的背景图
UIImageView *sliderBgV = [[UIImageView alloc] initWithFrame:CGRectMake(slider_offX, CGRectGetHeight(
self
.view.bounds) - slider_offY - slider_h, slider_w, slider_h)];
sliderBgV.image = [UIImage imageNamed:
@"progress_bg"
];
[
self
.view addSubview:sliderBgV];
[
self
.view addSubview:timeSlider];
//设置滑动条
timeSlider.minimumValue = 0;
timeSlider.maximumValue = 24;
timeSlider.value = 5;
//设置滚动条左侧和右侧不同的颜色
[timeSlider setMaximumTrackImage:[UIImage imageNamed:
@"progress_right"
] forState:UIControlStateNormal];
[timeSlider setMinimumTrackImage:[UIImage imageNamed:
@"progress_left"
] forState:UIControlStateNormal];
[timeSlider setThumbImage:[UIImage imageNamed:
@"progress_point"
] forState:UIControlStateNormal];
[timeSlider setThumbImage:[UIImage imageNamed:
@"progress_point"
] forState:UIControlStateHighlighted];
//画点的参数准备
int
point_w = 6;
int
point_dis = 20;
//点间距
int
point_offX = 10;
int
point_num = CGRectGetWidth(timeSlider.bounds)/point_dis;
//注意!!!这里背景View的高度为0是重点
//点的背景view,注:高度为0,防止干扰slider,并且可以悬浮在中间的精度条上
UIView *pointBgV = [[UIView alloc] initWithFrame:CGRectMake(slider_offX + slider_deltaX, CGRectGetHeight(
self
.view.bounds) - slider_offY - slider_h - 3, CGRectGetWidth(timeSlider.bounds), 0)];
pointBgV.backgroundColor = [UIColor blackColor];
[
self
.view addSubview:pointBgV];
//画点
for
(
int
i = 0; i < point_num; i ++) {
UIImageView *pointImg = [[UIImageView alloc] initWithFrame:CGRectMake(point_offX + i * point_dis, 0, point_w, point_w)];
pointImg.image = [UIImage imageNamed:
@"progress_dot"
];
pointImg.center = CGPointMake(pointImg.center.x, CGRectGetHeight(sliderBgV.bounds)/2);
[pointBgV addSubview:pointImg];
}
}
我们来看下运行效果
最后,奉上demo
sliderTest
0 0
- 自定义UISlider
- 自定义UISlider
- 自定义UISlider
- 自定义UISlider
- 自定义UISlider
- iOS 自定义UISlider
- 自定义uislider 样式
- iOS 自定义UISlider
- iOS UISlider自定义高度
- UISlider自定义总结
- UISlider自定义高度
- 自定义UISlider的样式
- IOS 控件 自定义UISlider Slider
- UISlider自定义滑块大小
- UISlider自定义滑块大小
- UISlider
- UISlider
- UISlider
- 在Myeclipse 中导入java web项目出现JRE System Library(unbound)和Server Library(unbound)解决方法
- 尽量以const、enum、inline替换#define
- RS232电平 RS485电平 RS422电平
- Java反射学习总结
- CSS3_2D转换
- 自定义UISlider
- 组合数学 随记
- 我理解的webservice是这样的
- MVC——第一个界面的数据传到第二个界面
- 剑指Offer--008-旋转数组的最小数字
- Spring-boot中利用外部配置文件生成数据源
- spring(13)------全面深入解析spring的AOP
- java位操作总结
- Claris and XOR