Взгляд на менее известный фреймворк
DeveloperToolsSupport — это небольшой фреймворк, представленный в iOS 14+ / macOS 11+. Он содержит только один протокол и одну структуру. Это позволяет разработчикам добавлять пользовательские представления SwiftUI и модификаторы представлений в библиотеку Xcode.
Библиотека Xcode
Откройте библиотеку Xcode с помощью сочетания клавиш shift-command-L (⇧⌘L)
Важно: вкладки представлений и модификаторов в библиотеке Xcode видны, только если открыт холст (⌥⌘↵)
Добавление ваших представлений и модификаторов SwiftUI в библиотеку Xcode
Чтобы добавить элементы в библиотеку, создайте структуру, соответствующую протоколу LibraryContentProvider, и инкапсулируйте все элементы, которые вы хотите добавить, в виде экземпляров LibraryItem. Реализуйте вычисляемое свойство представлений, чтобы добавить элементы библиотеки, содержащие представления. Реализуйте метод modifiers(base:) для добавления элементов, содержащих модификаторы представления. Xcode собирает элементы от всех поставщиков контента библиотеки в вашем проекте, когда вы работаете, и делает их доступными для вас в своей библиотеке.
К сожалению, Xcode не будет генерировать реализацию по умолчанию при использовании шаблона файла представления SwiftUI. Вместо этого вы можете использовать опцию меню в Xcode для создания реализации по умолчанию.
Вы можете предоставить дополнительные характеристики, как альтернативу, через инициализатор LibraryItem
.
Примечание. Вам не нужно писать дополнительный оператор импорта для этой платформы. DeveloperToolsSupport
импортируется под капотом, когда вы пишете оператор import SwiftUI
.
Открытие библиотеки Xcode (⇧⌘L) отобразит это пользовательское представление.
Недостатки
Я был очень взволнован, когда впервые услышал об этой функции. Я быстро понял, что есть существенные оговорки:
- Xcode не будет использовать вашу документацию уценки для вашего представления SwiftUI в качестве описания элемента библиотеки 😭 также нет другого способа добавить описание.
- Вы не можете добавить изображение или эскиз к элементу библиотеки.
- Ограниченные возможности форматирования фрагмента кода в элементе библиотеки. Это актуально только в том случае, если ваша функция
init
принимает несколько параметров, а их типы требуют глубокой вложенной инициализации. Я рекомендую вам указывать все в строке.
Я по-прежнему считаю, что имеет смысл создавать поставщиков библиотечного контента для повторно используемых представлений SwiftUI, потому что я надеюсь, что Apple и команда Xcode преодолеют эти недостатки в долгосрочной перспективе.
В моем следующем сообщении в блоге я покажу вам, как добавить пользовательский шаблон файла в Xcode, который позволяет вам создать новый файл SwiftUI с реализацией поставщика содержимого представления, предварительного просмотра и библиотеки за один раз.
Первоначально опубликовано на https://blog.eidinger.info.