UINavigationBar 不立即更新颜色

Posted

技术标签:

【中文标题】UINavigationBar 不立即更新颜色【英文标题】:UINavigationBar not updating Color immediately 【发布时间】:2014-11-05 23:54:10 【问题描述】:

当用户导航到不同的页面时,我正在尝试更改 UINavigationBar 的颜色。但是,我的应用程序不会更改 UINavigationBar 的颜色,直到用户退出页面并再次返回页面。我尝试将用于更改颜色的初始化代码放入-(void)viewDidLoad-(void)viewWillAppear:(BOOL)animated。以下是我目前尝试更改颜色的方式:

-(void)viewWillAppear:(BOOL)animated
    [[UINavigationBar appearance] setBarTintColor:[UIColor colorWithRed:0.32f green:0.14f blue:0.32f alpha:1.00f]];

【问题讨论】:

您的代码更改了所有 UINavigationBar 实例的标题栏颜色。它是应用程序范围的代理。如果您只需要在一个地方更改它,您就不想使用它。 【参考方案1】:

你应该使用类似的东西:

-(void)viewWillAppear:(BOOL)animated
    [self.navigationController.navigationBar setBarTintColor:[UIColor colorWithRed:0.32f green:0.14f blue:0.32f alpha:1.00f]];

您拥有的代码会更改所有 UINavigationBar 实例的标题栏颜色。它是应用程序范围的代理。如果您只需要在一个地方更改它,您就不想使用它。

【讨论】:

我收到的错误是 UINavigationItem 没有setBarTintColor的接口 没关系,我只是把navigationItem改成了navigationBar 对,我是凭记忆打字的。更新了答案。

以上是关于UINavigationBar 不立即更新颜色的主要内容,如果未能解决你的问题,请参考以下文章

UINavigationBar 立即消失,而带有动画的 pushViewcontroller 为真

在ios 7中将UI状态栏的背景颜色设置为黑色

无法更改 UINavigationBar 提示颜色和字体

如何设置自定义导航栏按钮颜色

如何以编程方式设置 UINavigationbar 的背景颜色?

UINavigationBar titleTextAttributes 从视图控制器返回后未更新