大小类和视图控制器子视图

时间:2016-11-28 19:32:03

标签: ios iphone ipad size-classes

我有一个包含两个视图的视图,一个用于所有大小类(视图A),另一个仅用于常规常规(仅限iPad,视图B)。在我的视图控制器的loadView中,我想浏览所有子视图并设置背景颜色。

override func loadView() {
    super.loadView()
    changeBackgroundColor(view)
}

func changeBackgroundColor(view: UIView) {
     print(view)
     view.backgroundColor = UIColor.red
     view.subviews.forEach { self.changeBackgroundColor($0) }
}

这是一个人为的例子,但它说明了iOS视图层次结构和视图加载系统的更深层次问题。在loadView期间在iPad上运行期间,即使特征集合按预期返回(使用常规常规设置),子视图数组中也不存在视图B 。此时存在的唯一子视图是视图A,尽管视图B仍然在运行时显示在屏幕上(背景颜色未更改)。

快进一点到viewWillLayoutSubviews和中提琴! 两个视图现在都存在,因为它们应该位于子视图数组中。我能够验证在加载视图中子视图数组计数是1并且在viewWillLayoutSubviews中它是2。

有没有人知道为什么iOS不会使用常规常规视图填充子视图阵列,直到执行布局之前?我无法在任何地方找到这种行为;如果其他人遇到类似的问题,我很好奇。

0 个答案:

没有答案