我需要同时更改我的应用程序中所有 UIviewcontrollers 的背景颜色,就像选择蓝色一样,让所有蓝色和绿色都做同样的事情。
4 回答
一种方法是在颜色更改后触发通知,并将所有视图控制器作为侦听器。然后您可以更改为该通知调用的选择器中的颜色...
(如果你想避免一次又一次地编写整个过程,你可以创建一个基视图控制器子类化 UIViewController 并且所有视图控制器都将子类化这个基视图控制器......这样做你只需要在基视图控制器中定义一次listner函数) .. 希望这会有所帮助... :)
大多数应用程序的视图控制器一次只能看到一个。如果你的应用是这样,那么你的 VC 可以在它们出现之前设置它们的视图背景颜色。
- (void)viewWillAppear:(BOOL)animated {
if (/* the condition that makes me supposed to have a blue background */) {
// I was supposed to be blue already, but nobody can see me yet,
// so everything is cool
self.view.backgroundColor = [UIColor blueColor];
}
}
完成此任务的最佳方法是将您的通用美学和视图逻辑重构为基类。例如,在我的大多数项目中,我都有一个名为 BaseViewController 的类。所有 UIViewControllers 都从这个基类扩展而来。在viewDidAppear
和viewDidLoad
方法中,我为我的应用程序中的每个视图完成了适当的设置。然后,当您(不可避免地)想要更改应用程序的外观时,代码只在一个地方!
您不能设置backgroundColor
for UIViewController
,只能设置它的view
属性。好吧,您可以将此UIColor
值设置为全局值,并在设置它时发布和观察者事件,这些事件将到达每个方法中UIViewController
以将其设置self.view.backgroundColor
为指定的颜色。