我创建了 UIViewController 的自定义子类,其作用类似于 UINavigationController 或 UITabBarController。我们称它为 ToolbarNavController。它在底部有一个工具栏,用户可以通过控件移动到不同的内容视图。
除了 ToolbarNavController 的视图之外,我还有两个内容视图。两者都是从笔尖加载的,并有自己的控制器。该应用程序开始显示其中之一。工具栏中的按钮允许用户在它们之间切换。
当我在 viewDidLoad 中将这些视图添加为 ToolbarNavController 视图的子视图时,它们会正确调整大小以填充状态栏和工具栏之间的区域,而不会重叠/重叠。
但是当我尝试延迟加载第二个视图时,仅当用户按下工具栏按钮时才第一次将其添加为子视图,iOS 不会调整视图的大小以考虑其父视图中的工具栏,并且它会覆盖工具栏这弄乱了我的自动布局约束。此外,当我不在 viewDidLoad 中添加子视图时,如果我在切换到第二个视图之前将设备置于横向,它会加载纵向框架。
底线:在 viewDidLoad 中插入子视图时,iOS 会正确调整其大小并为其管理自动旋转。稍后插入时,我需要自己检测方向设置框架。(由于某种原因,当我这样做时,自动旋转又开始了)。
到底是怎么回事?