UINavigationBar外观属性在iOS 8上不起作用

时间:2014-09-15 12:40:48

标签: ios uinavigationbar ios8

我曾经使用下面的代码更改我的应用的标题属性(font,textColor等)或Nativgation Bar:

[[UINavigationBar appearance] setTitleTextAttributes: 
[NSDictionary dictionaryWithObjectsAndKeys:[UIColor whiteColor], UITextAttributeTextColor, nil]];`

今天我注意到在iOS8 GM Seed上,textColor没有变化,仍然是黑色。

如果有人遇到过类似的问题,并且解决了它,我们非常感谢。

2 个答案:

答案 0 :(得分:6)

UITextAttributeTextColor已弃用。使用NSForegroundColorAttributeName

[[UINavigationBar appearance] setTitleTextAttributes: [NSDictionary dictionaryWithObjectsAndKeys:[UIColor whiteColor], NSForegroundColorAttributeName, nil]];

更具可读性:

[[UINavigationBar appearance] setTitleTextAttributes: @{NSForegroundColorAttributeName: [UIColor whiteColor]}];

在你的情况下进入ViewController使用它如下:

- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
    [self.navigationController.navigationBar setTitleTextAttributes: @{NSForegroundColorAttributeName: [UIColor whiteColor]}];
}

有了外观,你必须在AppDelegate中使用- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

答案 1 :(得分:1)

在查看@Matz答案后,我使用了NSForegroundColorAttributeName属性。 虽然我不得不将代码从我的UIViewController类的viewWillAppear:方法移植到App Delegate,但之后它才起作用。