Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/113.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 带角点的UISlider集图像_Ios_Objective C_Uislider - Fatal编程技术网

Ios 带角点的UISlider集图像

Ios 带角点的UISlider集图像,ios,objective-c,uislider,Ios,Objective C,Uislider,在这里,我需要使用圆角U滑块,但当我尝试设置图像时,它会显示矩形图像 我需要像这样的图像 这是我的代码 UIImage *volumeBackgroundImage = [[UIImage imageNamed:@"l2.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(9, 5, 7, 5)]; [self.audioSlider setMinimumTrackImage:[[UIImage imageNamed:@"l1.png"]

在这里,我需要使用圆角U滑块,但当我尝试设置图像时,它会显示矩形图像

我需要像这样的图像

这是我的代码

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

有谁能帮助实现这一点

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

一种解决方案是自己处理结尾处的舍入:

self.audioSlider.layer.cornerRadius = 5.0;
用这个值进行实验,它应该会起作用


或者,您可以确保图像具有圆角。

您需要具有圆角的图像。例如:

然后简单地使用以下图像:

[_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是相同的,但为蓝色)

(如果图像是像素化的-那么你需要得到两倍大的图像-视网膜图像-
黑色_dot@2x.png

(或者,如果您确实需要比给定示例更小的图像,则只需将此图像重命名为
黑色_dot@2x.png
,而不是:
UIEdgeInsetsMake(12,12,12,12)
使用:
UIEdgeInsetsMake(6,6,6)


请参阅此处的更多信息:

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


不,先生,它仍然不起作用,它返回相同的结果。有什么解决方案吗?您尝试了哪种解决方案?两者?首先,当我将圆形边缘图像放置为像素化图像时,它们在第二秒内返回相同的结果,因此这似乎足以使图像具有更高的分辨率。