我正在尝试使用UINavigationBar标题文字颜色作为指示用户我的应用程序是否与外部附件有连接,例如红色表示断开连接,绿色表示已连接。
当连接状态发生变化时,通过使用setTitleTextAttributes方法然后调用[self.navigationBar setNeedsDisplay],更新UINavigationBar以获得正确的标题文本颜色没有问题。但是,更改不会立即反映出来。
我还使用[[UINavigationBar外观] setTitleTextAttributes:...],以便将来创建的任何新UINavigationBars都具有正确的值。如果我导航到新视图,导航栏标题是正确的颜色。
如何使用更新的标题颜色立即强制重绘UINavigationBar?
答案 0 :(得分:2)
我想我刚遇到同样的问题。这是解决此问题的更简单方法。假设此UINavigationBar
是标准UINavigationController
的栏,您只需重新分配正在显示的文本。这是你的控制器的title
属性。诀窍是,您需要更改其值才能使其正常工作。
self.navigationController.navigationBar.titleTextAttributes = @{...}
self.title = nil;
self.title = @"##Actual Title##";
答案 1 :(得分:0)
我使用以下代码在iPad模拟器上工作:
// update the title text color
NSDictionary *navBarTitleOptions = [NSDictionary
dictionaryWithObjectsAndKeys:newColor, UITextAttributeTextColor, nil];
[self.navigationBar setTitleTextAttributes:navBarTitleOptions];
// set and clear the title view in order to force the title to be
// redrawn in the correct color.
[self.navigationBar.topItem setTitleView:[[UIView alloc] init]];
[self.navigationBar setNeedsDisplay];
[self.navigationBar.topItem setTitleView:nil];
[self.navigationBar setNeedsDisplay];
然而,这似乎不适用于iPhone / iPod模拟器。有什么想法吗?