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()这方面有什么好运气吗?