MarkdownUI 正在参加 2021 年度 OSC 中国开源项目评选,请投票支持!
MarkdownUI 在 2021 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
2021 年度 OSC 中国开源项目评选 正在火热进行中,快来投票支持你喜欢的开源项目!
2021 年度 OSC 中国开源项目评选 >>> 中场回顾
MarkdownUI 获得 2021 年度 OSC 中国开源项目评选「最佳人气项目」 !
授权协议 MIT License
开发语言 Swift
操作系统 OS X
软件类型 开源软件
开源组织
地区 不详
投 递 者 首席测试
适用人群 未知
收录时间 2021-12-02

软件简介

MarkdownUI

CI contact: @gonzalezreal

MarkdownUI is a library for rendering Markdown in SwiftUI, fully compliant with the CommonMark Spec.

Supported Platforms

You can use the Markdown SwiftUI view in the following platforms:

  • macOS 11.0+
  • iOS 14.0+
  • tvOS 14.0+

The NSAttributedString extension is available in:

  • macOS 10.12+
  • iOS 11.0+
  • tvOS 11.0+
  • watchOS 3.0+

Usage

You can create a Markdown view in SwiftUI by providing a CommonMark document.

Markdown(
    #"""
    It's very easy to make some words **bold** and other words *italic* with Markdown.

    **Want to experiment with Markdown?** Play with the [reference CommonMark
    implementation](https://spec.commonmark.org/dingus/).
    """#
)

Markdown text

From Swift 5.4 onwards, you can create a Markdown view using an embedded DSL for the contents.

Markdown {
    Heading(level: 2) {
        "Markdown lists"
    }
    "Sometimes you want numbered lists:"
    List(start: 1) {
        "One"
        "Two"
        "Three"
    }
    "Sometimes you want bullet points:"
    List {
        "Start a line with a star"
        "Profit!"
        Item {
            "And you can have sub points:"
            List {
                "Like this"
                "And this"
            }
        }
    }
}

A Markdown view renders text using a body font appropriate for the current platform. You can choose a different font or customize other properties like the foreground color, code font, or heading font sizes using the markdownStyle(_:) view modifier.

Markdown(
    #"""
    ## Inline code
    If you have inline code blocks, wrap them in backticks: `var example = true`.
    """#
)
.markdownStyle(
    DefaultMarkdownStyle(
        font: .system(.body, design: .serif),
        codeFontName: "Menlo",
        codeFontSizeMultiple: 0.88
    )
)

Markdown style

A Markdown view always uses all the available width and adjusts its height to fit its rendered text.

Use the accentColor(_:) view modifier to configure the link color.

Markdown("Play with the [reference CommonMark implementation](https://spec.commonmark.org/dingus/).")
    .accentColor(.purple)

Use modifiers like lineLimit(_:) and truncationMode(_:) to configure how the view handles space constraints.

Markdown("> Knowledge is power, Francis Bacon.")
    .lineLimit(1)

You can set the alignment of the text by using the multilineTextAlignment(_:) view modifier.

Markdown(
    #"""
    There are many different ways to style code with CommonMark. If you
    have inline code blocks, wrap them in backticks: `var example = true`.
    """#
)
.multilineTextAlignment(.trailing)

Text alignment

Using the NSAttributedString Extension

If you are not yet using SwiftUI, you can use the NSAttributedString extension to render Markdown in your app.

let attributedString = NSAttributedString(
    document: #"""
    It's very easy to make some words **bold** and other words *italic* with Markdown.
    """#,
    style: DefaultMarkdownStyle(font: .system(.body))
)

Supported Markdown Elements

MarkdownUI uses the CommonMark reference parser and it is fully compliant with the CommonMark Spec.

You can explore all the capabilities of this package in the companion demo project.

Demo

Installation

You can add MarkdownUI to an Xcode project by adding it as a package dependency.

Xcode 13 and later

  1. From the File menu, select Add Packages…*
  2. Enter https://github.com/gonzalezreal/MarkdownUI into the "Search or Enter Package URL" search field
  3. Link MarkdownUI to your application target

Xcode 12

  1. From the File menu, select Swift Packages › Add Package Dependency…
  2. Enter https://github.com/gonzalezreal/MarkdownUI into the package repository URL text field
  3. Link MarkdownUI to your application target

Other Libraries

展开阅读全文

代码

评论 (0)

加载中
更多评论
暂无内容
暂无内容
暂无内容
0 评论
1 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部