将 NavigationBar Tint/Color 更改为 Navigation Stack 中每个 ViewController 的不同值

Posted

技术标签:

【中文标题】将 NavigationBar Tint/Color 更改为 Navigation Stack 中每个 ViewController 的不同值【英文标题】:Change NavigationBar Tint/Colour to different values for each ViewController in a Navigation Stack 【发布时间】:2014-10-10 06:28:07 【问题描述】:

好的,这是一个我似乎无法弄清楚的奇怪问题,并且似乎在此处的任何答案中都没有解决,至少就 我能找到...

我有一个带有 4 个 Push Segue 的导航控制器到新的 ViewController 中。 而且我想让导航栏的外观对于每个视图都是不同的颜色。

我看到的是,它在我第一次进入堆栈中的 VC 时被覆盖,然后我无法从那时起更新它。

在我的演示 VC 中,我这样做(使导航栏清晰/不可见)

   [self.navigationController.navigationBar setBackgroundImage:[UIImage new] forBarMetrics:UIBarMetricsDefault];
    self.navigationController.navigationBar.shadowImage = [UIImage new];
    [self.navigationController.navigationBar setBackgroundColor:[UIColor clearColor]];

然后在我推送的 VC 中,我将背景颜色更改为不同的颜色...

[self.navigationController.navigationBar setBackgroundColor:bgColor];

当我按下返回进入呈现的 VC 时,被推送的 VC 的颜色仍然存在......

有什么想法吗??

【问题讨论】:

【参考方案1】:

哦。愚蠢的错误,但在这里为社区发布答案。

我的 NavBar 代码在 viewDidLoad 中,如果它是 NavigationController 中呈现的 ViewController,它当然永远不会被再次调用......

将代码移动到 viewWillAppear 修复了它。

breakpointsToTheRescue !

【讨论】:

但它没有动画就改变了。 我在这件事上也很头疼,关于如何随着你的过渡改变颜色的任何想法

以上是关于将 NavigationBar Tint/Color 更改为 Navigation Stack 中每个 ViewController 的不同值的主要内容,如果未能解决你的问题,请参考以下文章

自定义导航栏--将NavigationBar设置透明

没有 NavigationBar 的 UINavigationController

NavigationBar隐藏

将navigationBar背景图片设置为[UIImage new]后恢复

iOS 将 TabbarViewController 放入 NavigationController 但 navigationBar 为 nil

Xamarin.iOS:如何将 NavigationBar 添加到视图