MarkdownUI 2.0.0

31 января 2023

Обзор

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.

Оригинал статьи

Содержание