更改TitleTextAttributes文本颜色取决于导航栏颜色

时间:2018-08-20 14:13:15

标签: ios uinavigationbar

我有两个具有不同导航栏颜色的控制器。假设我想将第一个控制器设置为导航栏黑色,并将TitleTextAttributes颜色设置为whiteColor,然后导航至第二个控制器,它将更改导航栏白色和TitleTextAttributes黑色。导航栏颜色已更改,但标题文本属性未更改。请提出建议。

我编写这段代码,并在viewWillAppear方法中使用。

内部导航栏类别

typedef NS_ENUM( NSUInteger, UINavigationBarColor) {
    White,
    Black
};

+(void)setNavigationColor:(UINavigationBarColor)color{
    if (color == White) {
         [[self appearance] setTintColor:[UIColor whiteColor]];
        NSDictionary *attributes = @{NSForegroundColorAttributeName:[UIColor blackColor]};
        [[self appearance] setTitleTextAttributes:attributes];
    } else {
        [[self appearance] setTintColor:[UIColor blackColor]];
        NSDictionary *attributes = @{NSForegroundColorAttributeName:[UIColor whiteColor]};
        [[self appearance] setTitleTextAttributes:attributes];
    }
}

1 个答案:

答案 0 :(得分:0)

您的代码正在tintColor上设置titleTextAttributesUINavgiationBar appearance。这只会影响新创建的导航栏。它不会更改任何现有的导航栏。

您需要使setNavigationColor成为实例方法,并将[self appearance]更改为self