为视图控制器根视图设置外观代理

在使用UIAppearance时,是否可以只定位到视图控制器的根视图? 我想setBackgroundColor为我的应用程序委托的所有我的控制器,但只想定位视图控制器上的直接视图。 谢谢。

详细说,每个UIViewController子类都有自己的UIView对象,你可以通过它的视图属性来调用。 这就是你在故事板上放置像UITableView,UITabBar等东西的视图。 我想代理只适用于直接的看法,因为UIKit中的一切都是UIView的子类。

这样做的目的是集中控制我的视图控制器的外观。 发生在我身上的可能是我应该只使用UIViewController的子类,但是我想还有另外一个地方可以做我刚刚描述的内容。

不幸的是,你不能使用外观代理来实现这一点。 然而,如果你使用swift并且从storyboard或者nib加载视图控制器,一个解决scheme就是扩展UIViewController并覆盖awakeFromNib,像这样:

 extension UIViewController { open override func awakeFromNib() { super.awakeFromNib() view.backgroundColor = UIColor.blue } }