【问题标题】:set appearance proxy for view controller root view为视图控制器根视图设置外观代理
【发布时间】:2014-07-11 03:17:34
【问题描述】:

是否可以在使用 UIAppearance 时仅针对视图控制器的根视图?我想从我的应用程序委托中为我的所有控制器设置背景颜色,但只想针对视图控制器上的直接视图。谢谢。

详细地说,每个 UIViewController 子类都有自己的 UIView 对象,您可以通过其 view 属性调用。这就是你在故事板中放置任何东西的视图,如 UITableView、UITabBar 等。我希望代理仅适用于该直接视图,因为 UIKit 中的所有内容几乎都是 UIView 的子类。

这样做的目的是集中控制我的视图控制器外观。我突然想到,也许我应该只使用 UIViewController 的子类,但我想有另一个地方来做我刚才描述的事情仍然很酷。

【问题讨论】:

  • 你能详细说明一下吗(但只想针对视图控制器上的直接视图。)?
  • 尝试方法:+ (instancetype)appearanceWhenContainedIn:(Class <UIAppearanceContainer>)ContainerClass,...。所有的描述都在UIApperance Protocol Reference
  • 已经说过一切都是UIView的子类。您不是通过调用该方法来定位根视图,这就是我的问题所在。谢谢。

标签: ios uiviewcontroller uiappearance


【解决方案1】:

很遗憾,您无法使用外观代理来完成此操作。但是,如果您使用 swift 并从情节提要或 nib 加载视图控制器,一种解决方案是扩展 UIViewController 并覆盖 awakeFromNib,如下所示:

extension UIViewController {

    open override func awakeFromNib() {
        super.awakeFromNib()

        view.backgroundColor = UIColor.blue
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-15
    • 1970-01-01
    • 2015-02-09
    • 1970-01-01
    相关资源
    最近更新 更多