Взгляд на менее известный фреймворк

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.