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 设置带角的图像的主要内容,如果未能解决你的问题,请参考以下文章

快速设置 UIslider 拇指图像

带角的 UIImageView 的阴影不可见

自定义 UISlider(跟踪图像高度)

Swift 检测 UISlider 图像点击

偏移 UISlider 最小值/最大值图像

具有居中 UISlider 和两个图像的自定义 UITableViewCell