UISlider设置带角的图像

时间:2013-10-05 09:58:53

标签: ios objective-c uislider

这里我需要舍入uslider,但是当我尝试设置图像时,它会显示矩形图像,

我需要这张图片enter image description here

这是我的编码

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];

任何人都可以帮助实现这个目标

3 个答案:

答案 0 :(得分:4)

您需要有圆角的图像。例如: enter image description here

然后只需使用这样的图像:

[_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://stackoverflow.com/a/8656216/894671

答案 1 :(得分:1)

您可以尝试绘制所需大小的图像,而不是添加可能导致变形的图像。

Slider distortion solution

答案 2 :(得分:-1)

我认为这是因为圆形末端是由UISlider原生生成的。它假定拇指图像将覆盖极端位置的末端,因此不会重绘它。

一种解决方案可能是自己处理最终的舍入:

self.audioSlider.layer.cornerRadius = 5.0;

尝试使用此值,它应该可以正常工作。

或者,您可以确保图像具有圆形末端。