15

我在[UIBarButtonItem appearance]使用后退按钮背景图像时遇到了一些问题。

通常(iOS 5 和 iOS 6)我可以像这样设置后退按钮的背景图像:

[[UIBarButtonItem appearance] setBackButtonBackgroundImage:backButtonImage forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];

但在 iOS 7 中,背景图像不会出现在后退按钮上。奇怪的是,当点击一次后退按钮时,背景图像实际上会出现。

我尝试为所有状态设置图像,以测试 iOS 7 是否为未触摸的后退按钮使用某种新状态,但似乎并非如此。

你有什么想法,我做错了什么?

4

5 回答 5

1

我搜索了这个问题,发现你不是唯一一个有同样问题的人。还有很多其他人面临同样的问题UIAppearance。这些是证明(向您的客户解释):

  1. UIBackButton背景图像未出现
  2. 后退按钮在 iOS 7 中不可见

在这种情况下,您可以按照第二个链接中提供的答案进行操作。

您可以将backIndicatorImage属性设置为自定义图像,也可以通过将属性设置为UINavigationBar更改颜色。backIndicatorImagetintColorUINavigationBar

您可以创建自定义UIBarButtonItem并手动将其分配为UINavigationItem's leftBarButtonItem

于 2013-09-27T07:38:43.490 回答
1

使背景在 iOS7 上正确显示的解决方案是OS 7 custom back button。它调配了一种修复 Apple 错误的方法(即当背景图像更改时,他们忘记在私有视图上调用 setNeedsDisplay)。如果可能的话,无国界可能会更好,但 swizzling 确实有效。

于 2013-10-31T16:59:35.043 回答
0

要使用 ios7,您需要使用

    UIImage *backButton = [[UIImage imageNamed:@"icon_back" resizableImageWithCapInsets:UIEdgeInsetsZero];
if ([UINavigationBar instancesRespondToSelector:@selector(setBackIndicatorImage:)]) {
    [[UINavigationBar appearance] setBackIndicatorImage:backButton];
     [[UINavigationBar appearance] setBackIndicatorTransitionMaskImage:backButton];
}else{
//ios 5 and 6 code
}
于 2013-12-27T01:42:13.330 回答
0

我在这里实现了一个在 ios5+ 下工作的非常好的解决方案:

iOS7下后退按钮项目奇怪消失

于 2013-10-08T02:57:47.930 回答
0

尝试更改按钮的色调。iOS 7 中的 UIBarButton 存在一些问题

于 2013-09-26T08:10:53.860 回答