【问题标题】:Background image of back button does not appear before it is touched iOS 7后退按钮的背景图像在触摸 iOS 7 之前不会出现
【发布时间】:2013-09-25 08:07:44
【问题描述】:

我在使用[UIBarButtonItem appearance] 返回按钮背景图片时遇到了一些问题。

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

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

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

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

你知道我做错了什么吗?

【问题讨论】:

  • 可以通过混合方法修复显示故障;请参阅我在 stackoverflow.com/a/19452709/1754225 的回复。但其他一些替代方案可能更可取。
  • 不幸的是我也面临同样的问题。您对此有什么解决方案吗?
  • 不,我没有。我必须创建一个自定义后退按钮作为UIButton 并将其设置为leftBarButtonItem 以解决它。 :-(

标签: objective-c uinavigationbar ios7


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

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

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

    您可以创建自定义UIBarButtonItem 并手动将其分配为UINavigationItemleftBarButtonItem

    【讨论】:

      【解决方案3】:

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

      【讨论】:

      • 你能提供一些证据证明这个说法吗?我有同样的问题,我必须向客户解释。这就是我问你的原因:)
      • 先自己尝试一下,如果有效,您也可以向客户解释
      【解决方案4】:

      我在这里实现了一个非常好的解决方案,可以在 ios5+ 下运行:

      Back button item strangely disappearing under iOS7

      【讨论】:

        【解决方案5】:

        要使用 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
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-08-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多