我正在尝试制作一个博客类型的应用程序。我还不知道如何在 SwiftUi 中正确显示好看的文本。这篇文章是 DIN4 纸上的几页,有很多段落。我对 SwiftUi 或一般编码比较陌生,所以这就是我的每个段落的样子:
Text("Random Text to fill in about a paragraph to show how my code looks. I don't know if anyone will read this but I'm writing it anyway.")
.font(.body)
.frame(maxWidth: .infinity, alignment: .leading)
.padding(.init(top: 16, leading: 16, bottom: 0, trailing: 0))
//or .padding(.init(top: 16, leading: 16, bottom: 8, trailing: 8))
我遇到的问题是应用程序超载。文本模块太多,导致加载时间过长或根本无法加载。 如何轻松展示一篇好看的文章,让我写得更快?
一个选择是为每篇文章使用 Markdown 文件。
在 iOS 15 中,Apple 为 SwiftUI 文本视图添加了原生 markdown 支持。
不幸的是,它只支持 Markdown 功能的一个子集:粗体、斜体、链接、删除线和等宽。
不支持标题、有序或无序列表或图像。
您可以像这样在 Text() 中直接显示降价:
Text("Markdown **bold**")
Text("This is *italic*")
Text("Strike through text like this ~~striken through~~")
Text("`monospaced text`")
Text("Link: [Link text](www.iiroalhonen.com)")
或者您可以从这样的文件中显示它:
struct markdownFileView: View {
// Get the path to your markdown file.
let filepath = Bundle.main.url(forResource: "markdownFileName", withExtension: "md")
var body: some View {
// Show the markdown here
Text(try! AttributedString(
contentsOf: filepath!,
options: AttributedString.MarkdownParsingOptions(
interpretedSyntax: .inlineOnlyPreservingWhitespace
)))
}
}
如果您想要换行符,
options: AttributedString.MarkdownParsingOptions(interpretedSyntax: .inlineOnlyPreservingWhitespace
很重要,没有它会遇到一个大文本块。
一个重要提示: 如果您直接在 Xcode 中将文章作为 markdown 文件添加,有时将您的 markdown 文件拖动到资产不会将其添加到您的应用程序包中。
这意味着当您运行该应用程序时,它找不到文件,因此
filepath
将为零,因此使用 !
强制解包将导致崩溃。
因此请确保您的文件包含在构建阶段 > 复制捆绑资源中,方法是按照此 SO 中的说明在此处回答
通过这样做,您可以在 SwiftUI 应用程序中显示用简单的 markdown 编写的长篇文章。
我发现这篇文章很有帮助-https://iiroalhonen.medium.com/displaying-markdown-using-swiftui-e16131a9dc52
我找到了新行未在此处呈现的解决方案 - https://developer.apple.com/forums/thread/682957