我有一个ViewController,它的内容在视图的顶部三分之一,然后UIContainerView在视图的底部三分之二。UIContainerView允许用户在三个childViewControllers之间旋转。使用AutoLayout,我将UIContainerView限制在屏幕的侧面(widthAnchor)、屏幕底部(bottomAnchor)和屏幕上方三分之二的位置(topAnchor)。
在布局第一个childViewController中的内容时,我遇到了困难。似乎在初始加载时,childViewController视图被赋予了与设备高度相等的view.frame.height。我设置了我的约束来处理它,第一个屏幕显示得很好。
我现在遇到的问题是,当我在childViewControllers中旋转时,view.frame.height被设置为ContainerView的高度(我从一开始就怀疑是这种情况)。这会导致第一个childViewController中的约束“中断”。
请看下面的行为。
图1: ParentViewController的初始加载。
https://roryent.box.com/s/xhil4wk0ga5qoddhko5jxj3a1r4103h3
图2:切换childViewController。
https://roryent.box.com/s/9f2jj0l1waui3ekyplq4eae51m6wrqn5
图3:回到最初的childViewController。这些约束“起作用”,但对不同的view.frame.height做出反应。
https://roryent.box.com/s/cj9ffyy3m9oh8f523l2vsdezo1frk12x
注意:我在ChildViewController类中创建约束,并尝试使用该childViewController框架的框架来完成此操作。
我尝试将约束项的方法原封不动地移到childViewController中的willLayoutSubviews()中。
我怀疑我加载不同项目的位置有问题。
我希望childViewController代码中使用的self.view.frame.height反映显示它的UIContainerView的高度。在我的例子中,高度应该是.67 * UIScreen.Main.Bounds.Height。
发布于 2019-02-17 03:14:21
我相信这个问题是由于我实现了ContainerView及其对应的childViewControllers。
我已经按照本教程重新构建了功能,并且没有任何问题。https://cocoacasts.com/managing-view-controllers-with-container-view-controllers/
https://stackoverflow.com/questions/54692863
复制相似问题