UIContainerView中的ChildViewController初始加载时高度错误

时间:2019-02-14 14:34:47

标签: uiviewcontroller ios-autolayout uicontainerview

我有一个ViewController,其内容位于视图的顶部三分之一,然后是UIContainerView,位于视图的底部三分之二。 UIContainerView允许用户在三个childViewControllers之间旋转。使用自动布局,我将UIContainerView限制在屏幕的侧面(widthAnchor),屏幕的底部(bottomAnchor)和屏幕的三分之二(topAnchor)。

在第一个childViewController中布局内容时(出现在父ViewController的初始加载中),我遇到了麻烦。看起来在该初始负载下,给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。

1 个答案:

答案 0 :(得分:0)

我认为问题是由于我对ContainerView及其对应的childViewControllers的实现所致。

我已经按照本教程重新构建了功能,并且没有任何问题。 https://cocoacasts.com/managing-view-controllers-with-container-view-controllers/