创建像素完美的标准UIBarButtonItem,其中包含自定义图像。

6
我已经思考了几个小时,想知道是否可以创建一个带有自定义图像的标准UIBarButtonItem。我只需要标准的蓝色按钮,但是里面有表示偏好设置的图像(我自己创建的螺丝刀或齿轮)。我不想使用Photoshop来做这件事,因为我希望每个像素都完美无缺并且具备未来的可扩展性,以防万一苹果发布更高分辨率的iOS设备。
我在GitHub上找到了一个精彩的项目,其中包含了iOS附带的每个图形元素,并提取了看起来像是苹果自己在创建标准UIBarButtonItems时使用的图像。问题是,我不知道如何将其调整为正确的尺寸。如果用代码无法实现我的需求,那么也许有人可以告诉我如何使用这个图像。

GitHub - UIKit-Artwork-Extractor

UINavigationBarDefaultButton@2x.png

谢谢!


你能分享一下设置图标吗? - ma11hew28
2个回答

2
只需创建单色图像(只有alpha通道是重要的),并使用带有UIBarButtonItemStyleBordered或UIBarButtonItemStyleDone样式的{{link1:initWithImage:style:target:action:}}。
如果您想要全彩色图像,则必须使用链接的图像。秘诀是通过复制像素的“中间”列和行以模仿Android 9-patch image的方式来调整大小,而不是缩放整个图像。

也许我做错了什么,但这在iOS 5中似乎不起作用。我在我的接口文件中设置了一个条形按钮项的图像,它显示实际的图像而不是使用其alpha通道作为模板。 - jtbandes

1

这样的图像可以通过将它们设为可拉伸来使用。基本上,当您调整图像大小时,您只想要图像的中间部分被拉伸,而左右两端则不应缩放,以避免失真。

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

在您的情况下,为什么不直接使用带有 UIBarButtonItemStyleDoneUIBarButtonItemStyleBordered 样式的 UIBarButtonItem 呢?

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接