自定义 UISlider 无法正确设置最小轨道颜色
Posted
技术标签:
【中文标题】自定义 UISlider 无法正确设置最小轨道颜色【英文标题】:Custom UISlider Not able to set the minimum track color properly 【发布时间】:2015-10-26 15:09:55 【问题描述】:我已经继承了 UISlider 并通过这样做增加了宽度:
-(CGRect)trackRectForBounds:(CGRect)bounds
bounds.size.height = 50;
return bounds;
并更改了缩略图:
- (void)drawRect:(CGRect)rect
// Drawing code
[self setThumbImage:[UIImage imageNamed:@"icon_circle"] forState:UIControlStateNormal];
但这正在发生:
最小轨道图像从中心开始。我想让它从拇指端开始。所以最初,直到拇指它应该是蓝色的,当我将它拖到最后时,整个滑块应该是蓝色的,但在滑块的末端,滑块没有弯曲。它有锋利的边缘。我应该怎么做才能做到这一点?
【问题讨论】:
【参考方案1】:找不到太多帮助,所以我自己定制了一个。它也可以在 GitHub 上找到。 https://github.com/bhavukjain1/SlideToActionSliderios
【讨论】:
【参考方案2】:您是否设置了以下属性?
UIImage *minImage = [[UIImage imageNamed:@"slider_minimum.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 5, 0, 0)];
UIImage *maxImage = [[UIImage imageNamed:@"slider_maximum.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0, 0, 5)];
UIImage *thumbImage = [UIImage imageNamed:@"sliderhandle.png"];
[[UISlider appearance] setMaximumTrackImage:maxImage forState:UIControlStateNormal];
[[UISlider appearance] setMinimumTrackImage:minImage forState:UIControlStateNormal];
[[UISlider appearance] setThumbImage:thumbImage forState:UIControlStateNormal];
如果是这样,请查看this tutorial,了解如何创建自定义滑块,它附带一个示例项目,通过将您的实现与工作实现进行比较,您可能更容易找到错误。
【讨论】:
我没有滑块图像。我只有拇指图像,我使用颜色作为最小和最大轨道颜色。 然后,我同意一个来自类似堆栈溢出答案的人的观点,他认为这是因为圆形末端是由 UISlider 本机生成的,并假设拇指图像将覆盖极端位置的末端,所以它不会重绘它,解决方法是为最小和最大轨道使用圆形图像。【参考方案3】:解决矩形角的问题,在drawRect中
self.layer.cornerRadius = 25;
self.clipsToBounds = YES;
要在拖动时显示正确的图像,您还需要设置此项:
[self setThumbImage:[UIImage imageNamed:@"icon_circle"] forState:UIControlStateHighlighted];
【讨论】:
以上是关于自定义 UISlider 无法正确设置最小轨道颜色的主要内容,如果未能解决你的问题,请参考以下文章