我在定制UISegmentedControl
时遇到问题:我已将其分类为我为所选状态和未选择状态设置了背景,如下所示:< / p>
#define kEdgeInsets UIEdgeInsetsMake(18, 18, 18, 18)
UIImage *grayImage = [[UIImage v_imageNamed:@"gray_rect"] resizableImageWithCapInsets:kEdgeInsets];
[self setBackgroundImage:grayImage
forState:UIControlStateNormal
barMetrics:UIBarMetricsDefault];
UIImage *greenImage = [[UIImage v_imageNamed:@"green_rect"] resizableImageWithCapInsets:kEdgeInsets];
[self setBackgroundImage:greenImage
forState:UIControlStateSelected
barMetrics:UIBarMetricsDefault];
[self setTintColor:[UIColor colorWithRed:0.506 green:0.514 blue:0.525 alpha:1.000]];
这是我使用
的PNG现在,当我执行此代码时,我在分段控件上得到了一个奇怪的阴影,这不是我们想要的。这就是输出
的样子这很奇怪,因为原始图像上没有阴影,UISegmentedControl
也没有添加阴影(据我所知)。
进一步检查,我注意到如果我删除resizableImageWithCapInsets:
调用,图像看起来会扭曲(正如人们所期望的那样),但没有阴影。
有什么想法吗?因为我对resizableImageWithCapInsets:
UIButton
时没有遇到这个问题,所以我真的很生气
非常感谢!
答案 0 :(得分:0)
我明白了。
结果显示分段控制器的帧高44pts,背景图像为75ptsx75pts。由于我将图像的顶部和底部插图设置为18pts,因此操作系统正在拍摄图像的顶部和底部18个点并调整其大小,忽略其余部分。这是有趣的部分,因为图像有一个渐变,图像的其余部分被忽略,控件的颜色就像那样。
要使用具有垂直渐变的图像,您必须使用与控件完全相同的基本PNG(http://useyourloaf.com/blog/2012/07/05/customizing-appearance-with-resizable-images.html)
这就是我所做的,将图像大小调整为44x44pts并将插图更改为UIEdgeInsetsMake(0, 10, 0, 10)
,表示图像不必垂直调整大小