我有两个具有不同导航栏颜色的控制器。假设我想将第一个控制器设置为导航栏黑色,并将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];
}
}
答案 0 :(得分:0)
您的代码正在tintColor
上设置titleTextAttributes
和UINavgiationBar appearance
。这只会影响新创建的导航栏。它不会更改任何现有的导航栏。
您需要使setNavigationColor
成为实例方法,并将[self appearance]
更改为self
。