Преимущества и недостатки построения ваших представлений с использованием XIB

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

Создать XIB

Нам нужно создать XIB в папке, в которой мы хотим сохранить представление.
Итак, щелкните правой кнопкой мыши папку, добавьте новый файл и выберите представление пользовательского интерфейса.

Затем дайте общее имя для файла XIB и будущего файла Swift. Здесь вы можете добавить несколько подпредставлений в XIB.
Важно добавить все ограничения для ширины и высоты. Имейте в виду, что вам нужно всегда иметь верхнее и нижнее ограничение со статической высотой или добавлять статическую высоту с помощью кода. Это может помочь с использованием StackViews. Кроме того, вы можете использовать ограничения ›= для атрибутов top, bottom, начальные и конечные.

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

Создайте класс Swift

В той же папке добавьте новый файл Swift и назовите его так же, как XIB.
Очевидно, вам нужно написать класс с тем же именем, и этот класс должен быть унаследован от UIView.

Переопределите функцию awakeFromNib и добавьте следующий код:

  • Загрузите представление из файла XIB
  • Назначьте родительские границы дочернему фрейму
  • Сделайте подвид автоматически регулируемым по высоте и ширине
  • Добавить подпредставление к родительскому

Свяжите XIB с файлом Swift

Перейдите к файлу XIB, в левом столбце вы найдете раздел под названием: Владелец файла. Нажмите на нее и в правом столбце задайте имя класса Swift.

Кроме того, вы можете привязать код в XML-файле, открыв XIB как исходный код и найдя эту строку:

<placeholder placeholderIdentifier=”IBFilesOwner” id=”-1" userLabel=”File’s Owner” customClass=”YourSwiftClassName” customModule=”ProjectName” customModuleProvider=”target”/>

Теперь вы можете привязать представления XIB как IBOutlets и IBAction в классе Swift как обычный XIB.

Преимущества

  • Сохранение кода в чистоте
  • Лучшее управление автоматическим макетом с дружественным интерфейсом
  • Лучшее обслуживание кода
  • Легче добавлять новые функции

Недостатки

  • Не может наследовать представления
  • Может вызывать сложные конфликты git в файле представления XML.

Выводы

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

Важно !!
Ваш класс является родительским представлением. Он работает как контейнер для представления XIB, поэтому, если вы хотите, например, сделать цвет фона прозрачным, вы должны изменить его в обоих. Простым решением может быть переопределение в вашем классе всех свойств, которые вам нужно изменить, как всегда, например backgroundColor, layer и т. Д.