UINavigationController 背景颜色更改在 iOS 中隐藏后退按钮

Posted

技术标签:

【中文标题】UINavigationController 背景颜色更改在 iOS 中隐藏后退按钮【英文标题】:UINavigationController background color changes that hide Back Button in iOS 【发布时间】:2013-04-29 15:04:56 【问题描述】:

现在我正在尝试用我的自定义图像更改 UINavigationController 背景图像。

我可以使用以下代码进行更改。

[navigation.navigationBar insertSubview:[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"navController.png"]]  atIndex:1];

所以我得到了以下图片。那张照片是对的,并显示BarButton

但是当我转到detailViewController 时,没有BackButton。但是我可以在没有看到它的情况下点击它。

在我回到 MainViewController 后,我的 UINavigationController 背景正在发生,如下图所示。

他们隐藏了我的按钮。我在想atIndex:1 正在制造这个问题,因为索引1 高于0 并且所有按钮索引必须是0

这就是所有按钮都消失的原因。

那么我该如何解决这个问题呢?请帮忙。

感谢您的帮助。

【问题讨论】:

你为什么不使用setBackgroundImage:forBarMetrics:?见doc 哦。你说得对。我忘了用那个..非常感谢你。 :) 请回答。我会勾选你的。 【参考方案1】:
// not supported on ios4
UINavigationBar *navBar = [purchaseNavController navigationBar];
if ([navBar respondsToSelector:@selector(setBackgroundImage:forBarMetrics:)])

    [[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"brnlthr_nav.jpg"] forBarMetrics:UIBarMetricsDefault];

【讨论】:

【参考方案2】:

尝试使用苹果提供的外观代理

[[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"your_image"] forBarMetrics:UIBarMetricsDefault];

这将为整个应用程序设置它,或者您可以使用

[[self.navigationController.navigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"your_image"]];

【讨论】:

以上是关于UINavigationController 背景颜色更改在 iOS 中隐藏后退按钮的主要内容,如果未能解决你的问题,请参考以下文章

如何将 CAGradientLayer 应用于 UINavigationController 背景

快速更改UITabBar中“更多” UINavigationController的背景颜色

UINavigationController 清除背景色

UINavigationController 背景颜色更改在 iOS 中隐藏后退按钮

将 UINavigationController 与具有透明背景的 UIViewController 一起使用

如何检测 UINavigationController 工具栏背景上的触摸