UISlider没有内置支持您想要做的事情.这也可能是最好写你自己的子类UIControl或UIView而不是试图定制UISlider.
但如果你真的想定制一个UISlider,这就是你需要知道的.
A UISlider有三个私人UIImageView子视图:一个用于拇指,一个用于拇指左侧的轨道,一个用于拇指右侧的轨道.当您以编程方式拖动滑块或更改滑块值时,滑块会自行发送layoutSubviews.在其layoutSubviews方法中,它更改三个图像视图的帧以匹配新的滑块值.
你不应该搞乱UISlider私人子视图.它们可能会在iOS的未来版本中发生变化.相反,您希望有效地禁用轨迹图像子视图,以便您可以绘制自己的轨迹,并单独保留拇指图像子视图,以便UISlider显示拇指.
你需要子类UISlider.在你的子类中,你需要做几件事:
你需要设置你minimumValueImage和maximumValueImage属性透明UIImage.这将有效地禁用UISlider绘制正常的两部分轨道的私有子视图.
你需要给自己三个新UIImage属性:leftEndImage,rightEndImage,和filledImage.您将使用它们来填充轨道的三个不同部分.
你需要给自己三个UIImageView子视图 - 一个用于轨道的三个部分.
你需要覆盖layoutSubviews.在您的方法中,您需要调用[super layoutSubviews],然后设置三个图像子视图的帧以匹配滑块的当前值.
如果您是iOS编程新手,可能会有点复杂.祝好运.
实际上,我可以设置minimumValueImage为默认maximumValueImage图像的左右镜像,这样就UISlider可以绘制三部分轨道的两个白色端部.然后你只需添加一个UIImageView自己的子视图来绘制轨道的蓝色部分.
无论如何,如果你子类化UISlider并插入子视图,你依赖于UISlider实现不会改变太多.例如,如果未来版本UISlider直接绘制轨道和拇指drawRect:而不是使用子视图,则子类肯定会出错.