Контейнерные представления iOS с автоматическим изменением размера - PullRequest
0 голосов
/ 10 ноября 2018

Я создаю приложение для iOS с несколькими экранами, но я хочу избежать дублирования кода, а также одной большой раскадровки. В идеале я хотел бы при необходимости загрузить различные контроллеры представления на основе выбранной раскадровки в моем представлении содержимого.

Шаблон экрана (Master / Root View) должен состоять из 3 видов, а именно:

  • Представление A , которое действует как представление навигации,
  • Представление B , где различные контроллеры представления должны быть загружены на основе действий пользователя и,
  • Представление C , очень похоже на панель вкладок или 3-е представление, где я могу отображать некоторые
    косвенная информация.

enter image description here

Теперь, конечно, я мог бы пойти с традиционными UINavigationController и UITabBar, но мне нужен больший контроль над этими представлениями, особенно с точки зрения размера (они имеют минимальные высоты, которые больше, чем у NavBar и TabBar).

Мне также нужно, чтобы размеры этих видов изменялись в зависимости от черт и размера класса, чтобы заполнять весь экран.

Я пытаюсь использовать контейнерные представления для этого, но не могу заставить их автоматически изменять размеры, несмотря на то, что попробовал другой набор ограничений в автоматическом макете. Помещение трех представлений в стеке также не помогает.

В конечном итоге я хотел бы иметь возможность работать отдельно с моими различными представлениями контроллеров, которые будут загружены в Представление B , используя их собственные раскадровки, вызывая их программно в B и автоматически изменяя размер всего.

enter image description here

Спасибо всем за ваш добрый и ценный вклад! Chris

1 Ответ

0 голосов
/ 13 ноября 2018

При использовании addChildViewController(childVC) / addChild(childVC) ( Swift 4.1 / 4.2 ), затем myContainerView.addSubview(childVC.view) вам необходимо либо

  • добавить ограничения для добавленного подпредставления

или

  • установить фрейм подпредставления и .autoResizingMask

После этого вновь добавленное подпредставление будет правильно размещено и изменено в размере.

...