自定义UISlider无法正确设置最小轨道颜色

时间:2015-10-26 15:09:56

标签: ios objective-c uislider

我已经将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];
}

但这种情况正在发生:

enter image description here enter image description here

最小曲目图像从中心开始。我想从拇指结束开始。所以最初,直到拇指它应该是蓝色,当我拖动它直到结束时整个滑块应该是蓝色但在滑块的末端,滑块不是弯曲的。它有锋利的边缘。我该怎么做才能做到这一点?

3 个答案:

答案 0 :(得分:2)

无法找到很多帮助,所以我自己定制了一个。它也可以在GitHub上找到。 https://github.com/bhavukjain1/SlideToActionSlideriOS

enter image description here

答案 1 :(得分:0)

您是否设置了以下属性?

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如何创建自定义滑块,它附带一个示例项目,通过比较您的实现与工作实现,可能更容易找到您的错误。

答案 2 :(得分:0)

解决矩形角问题,在drawRect

self.layer.cornerRadius = 25;
self.clipsToBounds = YES;

要在拖动时显示正确的图像,您还需要设置它:

[self setThumbImage:[UIImage imageNamed:@"icon_circle"] forState:UIControlStateHighlighted];