要自定义 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];
我相信您必须编写自己的滑块才能做到这一点。似乎没有(公共)API 可以改变 UISlider 关于可拉伸区域的行为。
您可以将图像创建为您需要的宽度,并预先渲染图案。
您需要使用 stretchableImageWithLeftCapWidth:topCapHeight: 初始化图像。leftCapWidth 和 topCapHeight 是图像对象的只读属性,但使用该函数可以设置它们。你只设置 left 和 top 因为左右 caps 的大小相同,top 和 bottom 也相同。因此,要使用左侧大小为 5 像素的自定义滑块轨道,您需要有一个 11 像素宽的图像,无论您需要什么高度:左帽为 5,轨道拉伸为 1 像素宽,右边还有 5 个。没有玩过它,我不知道使用大于 0 的 topCapHeight 是否按预期工作,但我怀疑它不会引起很多问题。
我想要 UISlider 后面的模式。我最终将两个图像都设置为 nil 并在滑块下添加了一个视图,因为我不需要它在拇指的任何一侧都不同。如果您需要根据位置更改它,这将更加困难,但非常可行。
要制作您的自定义 UISlider,您有很多方法。取决于你想要什么定制。您可以设置默认属性来自定义 UIslider,如下所示: setThumbImage:forState: setMinimumTrackImage:forState: setMaximumTrackImage:forState: 如果您想要进一步自定义,可以参考以下链接 https://medium.com/@0209neha/creating -a-custom-uislider-7756bf898832#.o1l4qhymo https://github.com/0209Neha/ExploringSlider