iOS 5:你可以在特定的类中覆盖UIAppearance定制吗?
我正在build立一个应用程序与许多视图控制器:我有一个UITabBarController
持有4 UINavigationController
。 我希望所有的导航栏都是我自定义的颜色,比如蓝色,我通过在应用程序代理中这样做来实现:
[[UINavigationBar appearance] setTintColor:[UIColor blueColor]];
但我也有一个特殊的视图控制器,它有一个地图,对于这个视图控制器,我想重写使用UIAppearance
的蓝色导航栏,使其成为黑色的不透明风格。 我试着通过在viewDidLoad
调用它:
self.navigationController.navigationBar.barStyle = UIBarStyleBlack; self.navigationController.navigationBar.translucent = YES;
但没有任何反应。 可以做到这一点,或者我必须放弃UIAppearance,并为每个视图控制器手动设置navigationBar
上的属性?
你这样做的方式应该是可行的,但事实并非如此。 这确实工作,虽然:
[[UINavigationBar appearanceWhenContainedIn:[YourOtherVC class], nil] setTintColor:[UIColor blackColor]];
移动你的改变viewWillAppear:而不是viewDidLoad:它应该工作。
为此你会做:
id specialNavBarAppearance = [UINavigationBar appearanceWhenContainedIn:[SpecialViewController class], nil]; [specialNavBarAppearance setBarStyle:UIBarStyleBlack]; [specialNavBarAppearance setTranslucent:YES];