Fork me on GitHub

UISlider 使用采坑记

之前被测试同学提了一个bug,说是我们的播放器进度条,缓冲进度和播放进度显示的图层不能完美重叠,看起来很奇怪,我查看了代码,两者都是Y轴居中显示的,而且之前使用一直没有出现问题(使用xib创建的)。于是我就对比这两者有什么区别,最后定位到问题。

改变slider的高度不能靠约束

在我们iOS开发中,很多时候都会用到很多控件自定义,但是个人觉得,能够在最短的时间里实现UI的方法还是尽量用系统的控件,因为既稳定又快捷。

下面就是我们所要修改的地方,只需要创建一个继承UISlider的类,在里面重写一个方法,即可搞定。

1
2
3
4
5
// 控制slider的宽和高,这个方法才是真正的改变slider滑道的高的
- (CGRect)trackRectForBounds:(CGRect)bounds {

return CGRectMake(0, 21, CGRectGetWidth(self.frame), 8);
}

附上Demo链接:自定义UISlider Demo

当然还有几个其他的方法,改变slider其他属性的。大家可以去查阅相应的API。

最终我在初始化Slider的代码中将对控件高度的约束那行代码注释掉,bug修复。

时间长了,啥都容易忘,好记性不如烂笔头,还是把他们记下来比较靠谱。

------------- 本文结束感谢您的阅读 -------------