UINavigationBar后退按钮可伸缩图像太长

时间:2012-08-19 14:50:58

标签: objective-c ios uiimage uinavigationbar stretching

我使用以下代码来自定义UINavigationBar的后退按钮。但是,图像被拉伸太远,导致如下图像。请告诉我如何防止这种情况?

谢谢!

[[UIImage imageNamed:@"back_button"] stretchableImageWithLeftCapWidth:14 topCapHeight:0]

enter image description here

原始后退按钮图片:enter image description here

4 个答案:

答案 0 :(得分:2)

UIBarButtonItem的最小宽度很大程度上取决于您提供的图片的大小。您应该从编辑器中导出后箭头图像,以便图像中间列中只有1像素的可图块化图像内容,这样左右部分可以用作左右上限:

Back bar button item arrow example

答案 1 :(得分:1)

根据图像,似乎图像被正确拉伸。只需检查后退按钮框架即可。如果字符串“Profile”的末尾没有空格,请验证。

答案 2 :(得分:0)

iOS 5中不推荐使用

stretchableImageWithLeftCapWidth:topCapHeight

这不能回答你的问题。这只是一个暗示。

Deprecated UIImage Methods

答案 3 :(得分:0)

我有一个带有噪点纹理的图像,并希望做同样的事情。我终于找到了这个解决方案,我相信它完全符合您的要求(至少在iOS 6中):

UIBarButtonItem *backButton = [[UIBarButtonItem alloc] init];
UIImage *buttonBg = [[UIImage imageNamed:@"back-arrow.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 16, 0, 6)];
[backButton setBackButtonBackgroundImage:buttonBg forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
backButton.title = @"Back";

您可以自定义边缘插入以排除不应拉伸的部分。