UIView vs Контейнерный Вид

Итак, вот проблема, которую я пытаюсь решить.

В каждом viewController Я пытаюсь вставить рекламу и фактические элементы управления. Я закончил пару уроков на raywenderlinch.com, чтобы понять, как люди профессионально размещают рекламу в своем приложении. Они использовали UIViews, чтобы иметь два представления под mainview контроллера представления. Таким образом, я полностью понял, что один subview удерживать рекламу, а другой содержит фактическое содержимое приложения. если объявление загружено, зайдите на экран, иначе пусть у другого просмотра будет вся доступная область.

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

3 ответа

Ты используешь UIView когда у вас уже есть представление и вам не нужно иметь выделенный контроллер представления для построения и обработки взаимодействий внутри него.

Со страницы помощи UIView:

Объект UIView претендует на прямоугольную область своего окружения superview (его родитель в иерархии представления) и отвечает за все рисование в этом регионе...

Упрощенная структура: YourViewController --- (имеет) ---> UIView


Ты используешь UIContainerView когда вам нужно встроить другой контроллер представления в тот, который у вас уже есть. Встроенный контроллер представления отвечает за возврат представления для области, в которой UIViewContainer занимает. Поэтому ваш UIContainerView знает, какой контроллер представления использовать для рендеринга UIView внутри региона он занимает.

Со страницы справки UIContainerView:

Контейнерное представление определяет область в подграфе представления контроллера представления, которая может включать дочерний контроллер представления.

Упрощенная структура: YourViewController --- (имеет) ---> SubViewController --- (имеет) ---> UIView

Этот SubViewController возвращает представление и обрабатывает его события.

В качестве альтернативного ответа вы также можете рассмотреть вариант использования вместо технических различий. Например: зачем использовать вид контейнера?

Обычное использование представлений контейнера - это повторное использование (совместное использование) представления непосредственно в раскадровке. Ранее повторное использование представления требовало создания отдельного файла "xib" и программного добавления этого представления при загрузке контроллера представления.

пример использования варианта просмотра контейнера

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

Несколько других мыслей о том, когда его использовать:

  • Панель навигации является частью UINavigationController, который является контроллером представления контейнера. Итак, если вы хотите создать собственную альтернативу, вы, вероятно, будете использовать контейнерное представление.
  • Контейнер может помочь в любое время, когда вы хотите временно показать сложное представление поверх вашего текущего VC, но не можете / не хотите представлять другой VC модально. Этот подход все еще позволяет вам создавать это временное представление в конструкторе интерфейсов, устанавливать для него автоматические ограничения макета и т. Д.
  • Я также нашел руководство, объясняющее, что есть способ переключать различные виды контейнеров в зависимости от ситуации, позволяя вашему VC иметь подразделы, которые являются очень динамичными, но без необходимости создавать эти подразделы программно. Картинка из этого руководства, демонстрирующая то, что я имею в виду:

используя несколько вариантов просмотра контейнера

Надеюсь, это поможет людям, которые пытаются выяснить, когда к ним применяется представление контейнера. Если у вас есть другие примеры использования, пожалуйста, отредактируйте / добавьте их или оставьте в комментариях!

Если вы видите подробно эти контейнерные представления типа класса UIView. Чтобы понять, почему нам нужен containerView, вы должны увидеть ниже часть

В большинстве случаев контроллер представления контейнера похож на контроллер представления содержимого. Он управляет представлениями и контентом, координирует действия с другими объектами в вашем приложении и отвечает на события в цепочке респондента. Перед разработкой контроллера контейнера вы должны быть уже знакомы с разработкой контроллеров представления содержимого. Вопросы дизайна в разделе "Создание пользовательских контроллеров представления содержимого" также применяются при создании контейнеров.

для более подробной информации о контейнере перейдите по ссылке Но прежде чем начать, вы должны иметь представление о

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

Таким образом, вы можете пойти на оба подхода. Надеюсь, что это поможет вам. счастливого кодирования:)

Другие вопросы по тегам