自定义UISlider外观

时间:2009-04-16 10:22:43

标签: ios cocoa-touch uikit uislider

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

  

可拉伸区域位于两者之间   封顶区域。端盖定义   剩下的图像部分   原样并且没有拉伸。该   可拉伸区域是1点宽   可以是端盖之间的区域   复制以使图像出现   更长的时间。

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

任何人都知道如何解决这个问题?或者我是否必须从头开始编写自己的滑块?

7 个答案:

答案 0 :(得分:12)

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

答案 1 :(得分:2)

我知道这是迟到的答案。

但我解决了以下问题:

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

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

答案 2 :(得分:1)

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

答案 3 :(得分:1)

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

答案 4 :(得分:0)

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

答案 5 :(得分:0)

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

答案 6 :(得分:0)

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