UIAppearance在AppDelegate之外工作吗?

时间:2013-05-08 11:05:44

标签: ios appdelegate uiappearance

我和UIAppearance有点玩过,而且效果很好。目前我正在设置AppDelegate中的所有外观,但现在我需要在应用程序启动后进行一些自定义(在用户登录后进行主题化)。

是否可以将外观材料放在AppDelegate之外?当然我已经尝试了,但它没有效果。我是否必须重新加载wo-App-UI,如果是,我该如何做?

谢谢!

克里斯

1 个答案:

答案 0 :(得分:1)

如果您使用xib创建视图,则应在AppDelegate中进行外观自定义,因为应在创建任何UIControl对象之前执行自定义。您可以使用 appearanceWhenContainedIn

为不同的视图控制器/容器自定义它
  

要自定义容器类实例或层次结构中实例所包含的类实例的外观,请使用+ appearanceWhenContainedIn:作为相应的外观代理。

例如:

[[UIBarButtonItem appearanceWhenContainedIn:[UINavigationBar class], nil] setTintColor:myNavBarColor];   
[[UIBarButtonItem appearanceWhenContainedIn:[UINavigationBar class], [UIPopoverController class], nil] setTintColor:myPopoverNavBarColor];

使用ViewController类

 [[UIStepper appearanceWhenContainedIn:[MainViewController class], nil]setTintColor:[UIColor redColor]];
 [[UIStepper appearanceWhenContainedIn:[DetailViewController class], nil]setTintColor:[UIColor greenColor]];  

如果您是以编程方式创建控件,则无论是在创建控件之前进行自定义

 [[UIStepper appearance]setTintColor:[UIColor redColor]];
 UIStepper *stepper = [[UIStepper alloc]init];
 [self.view addSubview: stepper];