在触摸iOS 7之前,后退按钮的背景图像不会出现

时间:2013-09-25 08:07:45

标签: objective-c uinavigationbar ios7

我遇到了[UIBarButtonItem appearance]后退按钮背景图片的一些问题。

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

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

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

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

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

5 个答案:

答案 0 :(得分:1)

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

  1. UIBackButton Background Image not appearing
  2. Back button is not visible in iOS 7

  3. 在这种情况下,您可以执行第二个链接中提供的答案。

    您可以将backIndicatorImage上的UINavigationBar属性设置为自定义图片,也可以通过在{{1}上设置backIndicatorImage属性来更改tintColor的颜色}}

    您可以创建自定义UINavigationBar并手动将其指定为UIBarButtonItem的{​​{1}}。

答案 1 :(得分:1)

在iOS7上正确显示背景的解决方案是OS 7 custom back button。它调整了修复Apple bug的方法(这是他们忘记在更改背景图像时在私有视图上调用setNeedsDisplay)。如果可能的话,走向无边界可能会更好,但是调整可行。

答案 2 :(得分:0)

尝试更改按钮的色调颜色。 iOS 7中存在UIBarButton

的问题

答案 3 :(得分:0)

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

Back button item strangely disappearing under iOS7

答案 4 :(得分: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
}