定制UISlider外观

要自定义UISlider的外观,您可以设置拇指和轨迹图像。 部分轨道图像被拉伸到合适的位置。 从文档:

可拉伸区域位于两个端盖区域之间。 端盖定义了图像中保持原样并且不被拉伸的部分。 可拉伸区域是端盖之间的1点宽的区域,可以复制以使图像显得更长。

现在我遇到的问题是我的可拉伸区域需要超过1点宽。 (这是一个模式)不幸的是,1点的宽度似乎是硬编码在SDK中。

任何人有一个想法如何解决这个问题? 或者我将不得不从头开始编写我自己的滑块?

我相信你将不得不编写自己的滑块来做到这一点。 似乎没有(公共)API来改变UISlider关于可伸缩区域的行为。

只需使用透明图像作为轨道图像,并将UIImageView放在下面:)

我知道这是迟到的答案。

但是我解决了这个问题,如下所示:

4是png文件中圆帽的宽度。

 UIImage *minimum = [UIImage imageNamed:@"slider_minimum.png"]; [slider setMinimumTrackImage:[minimum stretchableImageWithLeftCapWidth:4 topCapHeight:0] forState:UIControlStateNormal]; 

您可以创build图像,使其尽可能的宽,并且预渲染图案。

您需要用stretchableImageWithLeftCapWidth:topCapHeight:来初始化图像。 leftCapWidth和topCapHeight是图像对象的只读属性,但使用该函数可以设置它们。 您只设置左侧和顶部,因为左侧和右侧大小相同,顶部和底部也相同。 因此,要使用左侧尺寸为5个像素的自定义滑块轨道,您需要具有11像素宽的图像,无论您需要什么高度:左侧的像素为5,为轨道拉伸的像素宽度为1,还有5个是正确的。 没有玩过它,我不知道是否使用大于0的topCapHeight按预期工作,但我怀疑它不会造成很大的问题。

我想在我的UISlider背后有一个模式。 我最终将两个图像设置为零,并添加一个视图下的滑块,因为我不需要它在拇指的任何一边不同。 如果您需要根据职位进行更改,这将更加困难,但相当可行。

让你的自定义UISlider有很多方法。 取决于你想要的定制。 有一些默认的属性,你可以设置自定义你的UIslider,如下所示:setThumbImage:forState:setMinimumTrackImage:forState:setMaximumTrackImage:forState:如果你想进一步定制你可以参考下面的链接https://medium.com/@0209neha/creating -a-custom-uislider-7756bf898832#.o1l4qhymo https://github.com/0209Neha/ExploringSlider