【发布时间】:2020-07-24 13:57:23
【问题描述】:
在 UIKit 中,可以选择对齐文本,使其看起来像在报纸上。但是我在 Textelement 的 SwiftUI 中找不到这个选项。我只发现与 .trailing、.leading、.center 的多行对齐。
有人能指出正确的方向吗?
【问题讨论】:
-
将 UILabel 与 UIViewRepresentable 一起使用
在 UIKit 中,可以选择对齐文本,使其看起来像在报纸上。但是我在 Textelement 的 SwiftUI 中找不到这个选项。我只发现与 .trailing、.leading、.center 的多行对齐。
有人能指出正确的方向吗?
【问题讨论】:
SwiftUI 尚不支持对齐文本,因此您必须使用 UIViewRepresentable 包装 UIKit 视图。因此,对于合理的文本,您可以换行 UITextView。它看起来像这样:
struct TextView: UIViewRepresentable {
var text: String
func makeUIView(context: Context) -> UITextView {
let textView = UITextView()
textView.font = UIFont.preferredFont(forTextStyle: UIFont.TextStyle.body)
textView.textAlignment = .justified
return textView
}
func updateUIView(_ uiView: UITextView, context: Context) {
uiView.text = text
}
}
从这里,您可以像这样在视图中使用它:
struct MyView: View {
var body: some View {
TextView(text: "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin quis elementum lorem. Nullam fermentum viverra ipsum a finibus. Vestibulum venenatis risus vel leo sagittis, id aliquet tortor elementum. Aenean elementum orci ac sapien dictum laoreet. Sed placerat, magna sit amet eleifend auctor, odio ligula dapibus lacus, quis interdum ligula velit at est. Curabitur molestie dui sodales faucibus cursus. Duis posuere ex diam, tempor tincidunt nunc venenatis vitae. Integer vulputate odio vitae enim tincidunt, eget vulputate arcu pulvinar. Integer in magna erat.")
.frame(width: 500, height: 300)
}
}
【讨论】: