Как мы знаем, программный интерфейс может быть довольно напряженным и отнимать много времени. Под трудоемкостью я подразумеваю, что нам нужно создавать / записывать одни и те же коды несколько раз. Вы понимаете, что я имею в виду: нам нужно писать каждое ограничение вручную для каждого представления, которое у нас есть.
Один из способов решить эту проблему - создать простой DSL, чтобы повысить нашу продуктивность. Возьмем такой пример:

Это распространенный способ создания ограничений, с помощью специального расширения мы можем написать такие ограничения. Более чистый способ создания ограничений и, конечно же, автозаполнение бесплатно.

Проблемы
Я довольно давно использовал этот подход и очень хорошо служил мне. Но если у нас есть много представлений одновременно, и каждое представление расположено вертикально, мы столкнемся с первой проблемой, которая заключается в большом количестве повторяющегося кода.
Например, если у меня 5 представлений, мне нужно настроить ограничения одно за другим, тогда нам понадобится около ± 25 строк кода. Так есть ли лучшие способы решить эту проблему?
Что ж, мы можем сократить объем кода с помощью просмотра стека, и его довольно легко использовать, верно? И затем я начинаю придумывать лучшее решение, улучшая / используя концепции stackviews. Итак, я создал настраиваемое представление, которое я назвал ContainerView, который является подклассом UIView.
использование
Итак, давайте создадим этот простой макет, который довольно часто встречается

Используя представление, которое я назвал ContainerView, мы можем создать этот макет гораздо более простым способом. Код, который должен занимать около 25 строк кода, заканчивается 5 строками кода, которые легко читать, а также уже прокручиваемыми.

Заключение
Вы можете проверить этот код или реализацию в приведенном ниже источнике. Этот макет подходит для создания макета с вертикальным стеком. Пока проблем в этой реализации не обнаружил. Не стесняйтесь клонировать его и настраивать в соответствии с вашими потребностями.
Источник
ContainerView
https://github.com/windywu812/ContainerView
UIView + Ext
https://gist.github.com/windywu812/e6fc9159502bf6ce4a4641d6dc8bdc33