10

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

可拉伸区域位于两个端盖区域之间。端盖定义了图像中保持原样且未拉伸的部分。可拉伸区域是端盖之间的 1 点宽区域,可以复制该区域以使图像看起来更长。

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

有人知道如何解决这个问题吗?还是我必须为此从头开始编写自己的滑块?

4

7 回答 7

12

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

于 2010-06-11T10:27:19.150 回答
2

我知道这是迟到的答案。

但我解决了以下问题:

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

UIImage *minimum = [UIImage imageNamed:@"slider_minimum.png"];
[slider setMinimumTrackImage:[minimum stretchableImageWithLeftCapWidth:4 topCapHeight:0]
                      forState:UIControlStateNormal];
于 2012-08-09T04:19:22.947 回答
1

我相信您必须编写自己的滑块才能做到这一点。似乎没有(公共)API 可以改变 UISlider 关于可拉伸区域的行为。

于 2009-04-16T10:30:21.633 回答
1

您可以将图像创建为您需要的宽度,并预先渲染图案。

于 2009-04-16T13:33:23.677 回答
0

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

于 2009-04-17T03:15:26.373 回答
0

我想要 UISlider 后面的模式。我最终将两个图像都设置为 nil 并在滑块下添加了一个视图,因为我不需要它在拇指的任何一侧都不同。如果您需要根据位置更改它,这将更加困难,但非常可行。

于 2010-08-19T14:33:30.540 回答
0

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

于 2017-01-16T11:30:07.143 回答