UISlider 设置带角的图像
Posted
技术标签:
【中文标题】UISlider 设置带角的图像【英文标题】:UISlider set Image with corners 【发布时间】:2013-10-05 09:58:53 【问题描述】:这里我需要圆滑的滑块,但是当我尝试设置图像时,它会显示矩形图像,
我需要这样的图片
这是我的编码
UIImage *volumeBackgroundImage = [[UIImage imageNamed:@"l2.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(9, 5, 7, 5)];
[self.audioslider setMinimumTrackImage:[[UIImage imageNamed:@"l1.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(9, 5, 7, 5)]
forState:UIControlStateNormal];
[self.audioSlider setMaximumTrackImage:volumeBackgroundImage
forState:UIControlStateNormal];
[self.audioSlider setThumbImage:[UIImage imageNamed:@"sliderhandle.png"]
forState:UIControlStateNormal];
任何人都可以帮助实现这一目标
【问题讨论】:
【参考方案1】:您需要有圆角的图像。例如:
然后像这样简单地使用这个图像:
[_slider setMinimumTrackImage:[[UIImage imageNamed:@"black_dot.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(12, 12, 12, 12)]
forState:UIControlStateNormal];
[_slider setMaximumTrackImage:[[UIImage imageNamed:@"blue_dot.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(12, 12, 12, 12)
forState:UIControlStateNormal];
(其中 black_dot.png 是示例图像,而 blue_dot.png 将相同但为蓝色)
(如果图像是像素化的 - 那么你需要将这个图像放大两倍 - 视网膜图像 - black_dot@2x.png
)
(或者如果您实际上需要比给定示例更小的图像,则只需将此图像重命名为black_dot@2x.png
,而不是:UIEdgeInsetsMake(12, 12, 12, 12)
使用:UIEdgeInsetsMake(6, 6, 6, 6)
)
在此处查看更多信息:https://***.com/a/8656216/894671
【讨论】:
【参考方案2】:您可以尝试绘制所需大小的图像,而不是添加可能导致失真的图像。
Slider distortion solution
【讨论】:
【参考方案3】:我认为这是因为圆端是由 UISlider 本机生成的。它假定拇指图像将覆盖极端位置的末端,因此不会重绘它。
一种解决方案可能是自己处理最后的舍入:
self.audioSlider.layer.cornerRadius = 5.0;
用这个值进行实验,它应该可以工作。
或者,您可以确保图片的末端是圆形的。
【讨论】:
不,先生,它仍然不工作它返回相同的结果。我有任何解决方案 您尝试了哪种解决方案?两者都有? 首先它们返回相同的结果,其次当我放置圆形边缘图像时,它显示为像素化图像 所以看起来给图像一个更高的分辨率就足够了。以上是关于UISlider 设置带角的图像的主要内容,如果未能解决你的问题,请参考以下文章