自定义 UISlider 无法正确设置最小轨道颜色
Custom UISlider Not able to set the minimum track color properly
我已经将 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];
}
但这正在发生:
最小轨道图像从中心开始。我想让它从拇指端开始。所以最初,直到拇指它应该是蓝色的,当我将它拖动到最后时,整个滑块应该是蓝色的,但在滑块的末端,滑块不是弯曲的。它有锋利的边缘。我应该怎么做才能做到这一点?
您是否正在设置以下属性?
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 如何创建自定义滑块,它附带一个示例项目,通过将您的实现与工作实现进行比较,您可能更容易找到错误.
解决矩形角问题,在drawRect
self.layer.cornerRadius = 25;
self.clipsToBounds = YES;
要在拖动时显示正确的图像,您还需要设置此项:
[self setThumbImage:[UIImage imageNamed:@"icon_circle"] forState:UIControlStateHighlighted];
找不到太多帮助,所以我自己定制了一个。它也可以在 GitHub 上使用。 https://github.com/bhavukjain1/SlideToActionSlideriOS
我已经将 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];
}
但这正在发生:
最小轨道图像从中心开始。我想让它从拇指端开始。所以最初,直到拇指它应该是蓝色的,当我将它拖动到最后时,整个滑块应该是蓝色的,但在滑块的末端,滑块不是弯曲的。它有锋利的边缘。我应该怎么做才能做到这一点?
您是否正在设置以下属性?
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 如何创建自定义滑块,它附带一个示例项目,通过将您的实现与工作实现进行比较,您可能更容易找到错误.
解决矩形角问题,在drawRect
self.layer.cornerRadius = 25;
self.clipsToBounds = YES;
要在拖动时显示正确的图像,您还需要设置此项:
[self setThumbImage:[UIImage imageNamed:@"icon_circle"] forState:UIControlStateHighlighted];
找不到太多帮助,所以我自己定制了一个。它也可以在 GitHub 上使用。 https://github.com/bhavukjain1/SlideToActionSlideriOS