要自定义UISlider的视觉外观,您可以设置拇指和轨道图像。轨道图像的一部分会被拉伸到相应的宽度。根据文档:
一个可拉伸的区域位于两个端帽区域之间。端帽定义了保持不变且不被拉伸的图像部分。可拉伸区域是端帽之间的1点宽度区域,可以复制以使图像看起来更长。
现在我遇到的问题是,我的可拉伸区域需要超过1点宽度(它是一个图案)。不幸的是,SDK中好像将1点宽度硬编码了。
有没有人想出如何解决这个问题的想法?或者我是否必须从头开始编写自己的滑块?
要自定义UISlider的视觉外观,您可以设置拇指和轨道图像。轨道图像的一部分会被拉伸到相应的宽度。根据文档:
一个可拉伸的区域位于两个端帽区域之间。端帽定义了保持不变且不被拉伸的图像部分。可拉伸区域是端帽之间的1点宽度区域,可以复制以使图像看起来更长。
现在我遇到的问题是,我的可拉伸区域需要超过1点宽度(它是一个图案)。不幸的是,SDK中好像将1点宽度硬编码了。
有没有人想出如何解决这个问题的想法?或者我是否必须从头开始编写自己的滑块?
只需使用透明图片作为跟踪图像,并在下方放置UIImageView即可 :)
我知道回答晚了。
但是我按照以下方式解决了这个问题:
4是png文件中圆帽的宽度。
UIImage *minimum = [UIImage imageNamed:@"slider_minimum.png"];
[slider setMinimumTrackImage:[minimum stretchableImageWithLeftCapWidth:4 topCapHeight:0]
forState:UIControlStateNormal];
strechableImageWithLeftCapWidth:
已被弃用,应使用resizableImageWithCapInsets:
代替,后者使整个过程更加容易。 - Q8i我相信您将需要编写自己的滑块来完成此操作。似乎没有(公开的)API可以更改UISlider有关可拉伸区域的行为。
您可以创建所需宽度的图像,并预先渲染图案。
要创建自定义的UISlider有许多方法,具体取决于您想要的自定义内容。以下是一些默认属性,可以设置以自定义您的UIslider: setThumbImage:forState: setMinimumTrackImage:forState: setMaximumTrackImage:forState: 如果您想进行进一步的自定义,可以参考下面的链接 https://medium.com/@0209neha/creating-a-custom-uislider-7756bf898832#.o1l4qhymo https://github.com/0209Neha/ExploringSlider
我想在我的UISlider后面添加一个图案。最终,我将两个图像都设置为nil,并在滑块下方添加了一个视图,因为我不需要它在拇指的任一侧有所不同。如果您需要根据位置更改它,则可能会更加困难,但是完全可行。
[self setMinimumTrackImage:nil forState:UIControlStateNormal]; [self setMaximumTrackImage:nil forState:UIControlStateNormal];
。如果你这样做,你还需要设置[self setThumbImage:[UIImage imageNamed:@"whatever.png"] forState:UIControlStateNormal];
。 - Sam Soffes