Text 快速文本对齐

Text 快速文本对齐,text,swiftui,text-alignment,Text,Swiftui,Text Alignment,是否有人找到了一种方法来对齐文本中的字符串 在我的阅读应用程序中,我想让用户选择对齐方式,其中.leading和.training对齐方式都是同时正确的。不幸的是,文本的.multilitextalignment修饰符只有三个选项:.leading、.center和training 如果没有,我仍然可以将UILabel包装成UIViewRepresentable,因为UILabel具有.justified对齐选项,但我认为它应该也可以在文本中找到,但我找不到它。我知道我迟到了,但我面临同样的问题

是否有人找到了一种方法来对齐
文本中的字符串

在我的阅读应用程序中,我想让用户选择对齐方式,其中
.leading
.training
对齐方式都是同时正确的。不幸的是,
文本的
.multilitextalignment
修饰符只有三个选项:
.leading
.center
training


如果没有,我仍然可以将
UILabel
包装成
UIViewRepresentable
,因为
UILabel
具有
.justified
对齐选项,但我认为它应该也可以在
文本中找到,但我找不到它。

我知道我迟到了,但我面临同样的问题,我会在这里写它,它可以在将来帮助其他开发人员

不幸的是,到目前为止,苹果还不支持Swiftui2.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()

这方面有什么好运气吗?