iOS 7 UINavigationBar 隐藏了后退按钮

Posted

技术标签:

【中文标题】iOS 7 UINavigationBar 隐藏了后退按钮【英文标题】:iOS 7 UINavigationBar has hidden back button 【发布时间】:2013-11-06 16:31:03 【问题描述】:

我有一个应用程序,它的 UINavigationBars 中有一个带有自定义图像的后退按钮。在 ios 6 中一切都很好,但在 iOS 7 中,按钮大部分时间都是“不可见的”。

当我将新的视图控制器推入 UINavigationController 时,新屏幕不会出现后退按钮,但如果我触摸按钮应该在的位置,它会淡入。

如果我在没有动画的导航控制器上设置了两个视图控制器,则按钮显示正常,但不会出现在后续推送中。

我很确定我的代码中没有任何内容故意隐藏后退按钮并更改 UINavigationBar 上可用的各种颜色没有任何区别。

【问题讨论】:

我很确定您已经在您使用过的代码、xib 或情节提要的视图中添加了一个UINavigationItem :) 【参考方案1】:

这可能是由于您必须实现 iOS 7 中引入的两个新 UINavigationBar 属性:

self.navigationController.navigationBar.backIndicatorImage = [UIImage customImage]; self.navigationController.navigationBar.backIndicatorTransitionMaskImage = [UIImage customImage];

来自iOS 7 Transition Guidelines:

“如果您想使用自定义图像来替换默认的人字形,您还需要创建自定义蒙版图像。iOS 7 使用蒙版使上一个屏幕的标题出现或消失在人字形中在导航转换期间。要了解控制后退按钮和遮罩图像的属性,请参阅 UINavigationBar 类参考。"

【讨论】:

成功了!我正在这样做: UIImage* image = [UIImage imageNamed:@"back_button"]; UIImage* backButtonImage = [图像 resizableImageWithCapInsets:UIEdgeInsetsMake(image.size.height, image.size.width, 0, 0)]; [[UIBarButtonItem 外观] setBackButtonBackgroundImage: backButtonImage forState: UIControlStateNormal barMetrics: UIBarMetricsDefault];并需要将其更改为: UIImage* image = [UIImage imageNamed:@"back_button"]; [[UINavigationBar 外观] setBackIndicatorImage:image]; [[UINavigationBar 外观] setBackIndicatorTransitionMaskImage:image]; 在尝试将样式应用于 UIBarButtonItems 时,我的应用程序使用的 NUI 库导致了一些额外的问题。删除 BarButton 样式肯定有帮助! 太棒了!很高兴答案有所帮助。

以上是关于iOS 7 UINavigationBar 隐藏了后退按钮的主要内容,如果未能解决你的问题,请参考以下文章

iOS 7 UINavigationBar 在视图转换时未隐藏

为啥我的 UINavigationbar 被隐藏了?

iOS隐藏导航栏底部的线条& UINavigationBar小技巧

Uiwebview 用 Swift 隐藏/显示 UInavigationbar

在 iOS 8 中将 ViewController 的 View 作为子视图添加到 UIPageViewController 会在显示/隐藏时产生奇怪的 UINavigationBar

iOS 7 - 使 UINavigationBar 扩展到屏幕顶部