Как использовать раскадровку для создания и предварительного просмотра пользовательских представлений?
Xcode и Swift (Objective-C to) позволяют создавать пользовательские UIView, такие как пользовательские UIButton или пользовательские UITableViewCells. Вы можете нарисовать свое представление в раскадровке и использовать настраиваемый класс UIView для определения свойств вашего нового представления. Но в большинстве случаев вам нужно использовать это представление во многих местах вашего приложения. Как лучше всего этого добиться? Я дам вам свой метод достижения этого.
Создайте собственный класс с XIB
Сначала нам нужно создать наш собственный класс UIView. Я хочу, чтобы этот класс можно было редактировать с помощью Interface Builder (IB). Добавьте файл в свой проект «Файл → Новый → Файл…». В окне добавления нового файла выберите «Просмотр» в категории «Пользовательский интерфейс».
Затем нам нужно создать класс для добавления наших настраиваемых свойств. Добавьте в проект еще один файл «Файл → Новый → Файл…». В окне добавления нового файла выберите «Swift File» в категории «Источник».
Нарисуйте свой вид с помощью Interface Builder
Откройте файл просмотра MyButton.xib. Как видите, вид равен размеру экрана устройства. Сначала выберите вид в инспекторе объектов IB и удалите его.
Теперь добавьте кнопку в XIB, как обычно. И настраивайте его, как хотите. В моем случае мне нужна такая кнопка:
- Жирный шрифт и белый цвет текста
- Красный фон
- Белая граница 2 пикселя
Как вы знаете, мы не можем редактировать слой с помощью Interface Builder, поэтому нам нужно закодировать нашу белую границу размером 2 пикселя. Для этого нам нужно написать наш собственный класс MyButton.swift.
Пользовательский класс MyButton
Откройте MyButton.swift. Файл полностью пуст, поэтому добавьте UIKit и класс.
import Foundation import UIKit class MyButton: UIButton { }
Следующим шагом нам нужно установить владельца файла. В WIB на левой панели выберите File’s Owner и установите MyButton как Custom Class.
Затем подключите кнопку к классу с помощью IBOutlet, как обычно. В моем случае я даю кнопке имя «просмотр».
Чтобы использовать всю магию IB, мы добавляем в начало класса атрибут «@IBDesignable». Это позволяет рисовать и предварительно просматривать текущий класс в IB. Каждое изменение кода будет сразу видно в IB. Классно, правда?
Затем вы добавляете свои функции инициализации для создания экземпляра класса. «@IBDesignable» требует использования init (frame: CGRect) для правильной работы. Затем добавьте функцию настройки, чтобы настроить наш вид. Не забудьте добавить белую рамку в init, это и есть цель!
Вам просто нужно «связать» xib с классом, выбрав MyButton в атрибуте класса в Identity Inspector. Если все в порядке, XIB и класс будут автоматически скомпилированы XCode. Вы должны увидеть «Успешно», а сообщение об ошибке не появится.
Выполнено! Вот и волшебство ...
Теперь в основной раскадровке добавьте кнопку, измените тип на «Пользовательский» и примените класс «MyButton».
С помощью этой техники вы можете раздвинуть границы дизайна с помощью Storyboard и даже создать свой собственный фреймворк на основе компонентов UIKit. Это экономит много времени и особенно упрощает обслуживание вашего приложения.