1

我已经玩了一点 UIAppearance,它工作正常。目前我正在 AppDelegate 中设置所有的外观,但现在我需要在应用程序启动后进行一些自定义(用户登录后的主题)。

是否可以将外观的东西放在 AppDelegate 之外?当然我已经试过了,但是没有效果。我是否必须重新加载 wohle App-UI,如果是这样,我该怎么做?

谢谢!

克里斯

4

1 回答 1

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];
于 2013-05-08T11:50:19.057 回答