使用自定义图像创建像素完美标准UIBarButtonItem

时间:2011-07-09 13:41:55

标签: iphone ios uibarbuttonitem

在过去的几个小时里,我一直在摸不着头脑。是否可以在中创建带有自定义图像的标准UIBarButtonItem?我想要的只是标准的蓝色按钮,但是里面有一个代表偏好的图像(我自己创建的螺丝刀或齿轮)。我宁愿不使用Photoshop来做这件事,因为我希望每一个像素都是完美的和未来的证据,以防Apple发布更高分辨率的iOS设备。

我在GitHub上找到了一个精彩的项目,包括iOS附带的每个图形元素,并且我已经提取了Apple在创建标准UIBarButtonItems时使用的图像。问题是,它不能以我所知道的方式调整到适当的尺寸。如果不能用代码做我想做的事,那么也许有人可以告诉我如何使用这个图像。

GitHub - UIKit-Artwork-Extractor

UINavigationBarDefaultButton@2x.png

谢谢!

2 个答案:

答案 0 :(得分:2)

只需用单一颜色创建图像(只有alpha通道很重要),并使用initWithImage:style:target:action:和UIBarButtonItemStyleBordered或UIBarButtonItemStyleDone样式。

如果您想要全彩色图像,则必须使用链接的图像。秘诀是通过复制Android 9-patch image样式中的“中间”列和像素行来调整大小,而不是通过缩放整个事物。

答案 1 :(得分:1)

通过使它们可伸缩来使用这样的图像。基本上,您只需要在调整图像大小时拉伸图像的中间部分,而不应缩放左右顶盖,以避免失真。

UIImage *buttonImage = [UIImage imageNamed:@"UINavigationBarDefaultButton.png"];
UIImage *stretchableButtonImage = [buttonImage stretchableImageWithLeftCapWidth:5 topCapHeight:0];
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
[button setBackgroundImage:stretchableButtonImage forState:UIControlStateNormal];

但是,在您的情况下,为什么不使用UIBarButtonItemUIBarButtonItemStyleDone作为其风格的UIBarButtonItemStyleBordered