ChildViewController в UIContainerView имеет неправильную высоту при начальной загрузке - PullRequest
0 голосов
/ 14 февраля 2019

У меня есть ViewController, содержимое которого находится в верхней трети, а затем UIContainerView в двух нижних частях представления.UIContainerView позволяет пользователю переключаться между тремя childViewControllers.Используя AutoLayout, я ограничил 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 для этого.

Я попытался переместить методы для ограничения элементов в willLayoutSubviews () в childViewController без изменений.

Я подозреваю, что что-то не так с тем, куда я загружаю различные элементы.

Я бы ожидал, что self.view.frame.height, используемый в коде childViewController, отражает высоту UIContainerView.это показывает это.В моем случае высота должна быть 0,67 * UIScreen.Main.Bounds.Height.

1 Ответ

0 голосов
/ 16 февраля 2019

Я полагаю, что проблема была из-за моей реализации ContainerView и его соответствующих childViewControllers.

Я перестроил эту функцию после этого урока, и у меня не было проблем.https://cocoacasts.com/managing-view-controllers-with-container-view-controllers/

...