我知道我迟到了,但我遇到了同样的问题,我会写在这里,它可以帮助其他开发人员将来
不幸的是,直到现在 Apple 还不支持 SwiftUI 2.0 中的 .justified
你需要依赖 UIKit
在您的项目中添加此代码
struct LabelAlignment: UIViewRepresentable {
var text: String
var textAlignmentStyle : TextAlignmentStyle
var width: CGFloat
func makeUIView(context: Context) -> UILabel {
let label = UILabel()
label.textAlignment = NSTextAlignment(rawValue: textAlignmentStyle.rawValue)!
label.numberOfLines = 0
label.preferredMaxLayoutWidth = width
label.setContentHuggingPriority(.required, for: .horizontal)
label.setContentHuggingPriority(.required, for: .vertical)
return label
}
func updateUIView(_ uiView: UILabel, context: Context) {
uiView.text = text
}
}
enum TextAlignmentStyle : Int{
case left = 0 ,center = 1 , right = 2 ,justified = 3 ,natural = 4
}
那就这样用吧
LabelAlignment(text: "Your text here", textAlignmentStyle: .justified, width: UIScreen.main.bounds.width - 20)
将 20 更改为您喜欢的任何数字,以便在左右添加空格
我的解决方案将取决于文本内容的大小
如果文本很小,则视图会很小,反之亦然
所以它将充当 Text()