Обзор
MarkdownUI 2 был переписан с нуля и содержит массу новых функций и улучшений, таких как:
- GitHub Flavored Markdown (таблицы, списки задач, зачеркнутый текст и автоссылки);
- родной (нативный) рендеринг SwiftUI;
- поддержка настройки с помощью тем, стилей текста и стилей блоков.
За эти новые функции придётся внести несколько критических изменений, которые помогут вам исправить эти примечания.
Минимальные требования
Вы можете использовать MarkdownUI 2 на следующих платформах:
- macОС 12.0+;
- iOS 15.0+;
- tvOS 15.0+;
- watchOS 8.0+.
Для некоторых функций, таких как отображение таблиц или абзацев с несколькими изображениями, требуется macOS 13.0+, iOS 16.0+, tvOS 16.0+ и watchOS 9.0+.
Обновленное имя пакета
Чтобы отразить соглашения об именах сообщества Swift, пакет был переименован из MarkdownUI в swift-markdown-ui. Таким образом, в конечном итоге вам может понадобиться обновить любые проекты Xcode или файлы Package.swift, которые зависят от MarkdownUI.
Рендеринг
MarkdownUI 2 использует примитивы SwiftUI для рендеринга Markdown и больше не зависит от gonzalezreal/AttributedText.
Создание контента Markdown
MarkdownUI 2 представляет собой новый предметно-ориентированный язык для создания контента Markdown и больше не зависит от gonzalezreal/SwiftCommonMark.
Одно существенное отличие при использовании MarkdownUI 2 заключается в том, что MarkdownContent заменяет Document, предоставляя аналогичную функциональность.
Ещё одна вещь, о которой следует помнить — это разные названия некоторых типов, которые вы используете для создания контента Markdown:
- Используйте Blockquote вместо BlockQuote.
- Используйте NumberedList вместо OrderedList.
- Используйте BulletedList вместо BulletList.
- Используйте InlineImage вместо Image.
- Используйте InlineLink вместо Link.
- Используйте Code вместо InlineCode.
Загрузка asset images
В MarkdownUI 2 представлен протокол ImageProvider и соответствующие ему типы DefaultImageProvider и AssetImageProvider. Эти типы и новый модификатор markdownImageProvider(_:) заменяют тип MarkdownImageHandler и модификатор setImageHandler(_:forURLScheme:).
В следующем примере показано, как настроить поставщика asset image для загрузки изображений из основного пакета:
Markdown {
"![A dog](dog)"
"― Photo by André Spieker"
}
.markdownImageProvider(.asset)
Настройка поведения ссылки
Модификатор onOpenMarkdownLink(perform:) в MarkdownUI 1.x был предоставлен для включения настройки поведения ссылки в macOS 11.0, iOS 14.0 и tvOS 14.0. Этот модификатор больше недоступен в MarkdownUI 2, так как он не поддерживает эти платформы. Однако вы можете настроить поведение ссылки, установив значение среды openURL с помощью пользовательского OpenURLAction.
Стилизация Markdown
MarkdownUI 1.x предлагает несколько вариантов настройки внешнего вида контента. Напротив, MarkdownUI 2 предлагает новые типы Theme, TextStyle и BlockStyle, которые позволяют применять настраиваемый внешний вид к блокам и текстовым строкам в представлении Markdown.
Следовательно, тип MarkdownStyle, все его подтипы и модификатор markdownStyle(_:) больше недоступны в MarkdownUI 2.