要自定义UISlider的视觉外观,您可以设置拇指和轨迹图像。部分轨道图像被拉伸到适当的位置。来自文档:
可拉伸区域位于两者之间 封顶区域。端盖定义 剩下的图像部分 原样并且没有拉伸。该 可拉伸区域是1点宽 可以是端盖之间的区域 复制以使图像出现 更长的时间。
现在我遇到的问题是我的可拉伸区域需要超过1点宽。 (这是一种模式)不幸的是,1点宽度似乎在SDK中是硬编码的。
任何人都知道如何解决这个问题?或者我是否必须从头开始编写自己的滑块?
答案 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