在Text视图的许多属性中,我找不到任何与文本对齐相关的属性。我在一个演示中看到它自动处理RTL,当使用View的主体放置东西时,它总是自动居中。
是否有一些概念,我错过了关于SwiftUI布局系统,如果没有,我怎么能设置文本对齐属性的文本?
在Text视图的许多属性中,我找不到任何与文本对齐相关的属性。我在一个演示中看到它自动处理RTL,当使用View的主体放置东西时,它总是自动居中。
是否有一些概念,我错过了关于SwiftUI布局系统,如果没有,我怎么能设置文本对齐属性的文本?
当前回答
如果你想为文本保持恒定的宽度,“. multilinetextalignment (.leading)”在只有一行文本之前不会起任何作用。
这是对我有效的解决方案:
struct LeftAligned: ViewModifier {
func body(content: Content) -> some View {
HStack {
content
Spacer()
}
}
}
extension View {
func leftAligned() -> some View {
return self.modifier(LeftAligned())
}
}
用法:
Text("Hello").leftAligned().frame(width: 300)
其他回答
我也有同样的问题。 我用这个来解决问题。
Text("Test")
.frame(maxWidth: .infinity, maxHeight: .infinity, alignment: .leading)
从SwiftUI beta 3开始,你可以用框架修饰符居中文本视图:
Text("Centered")
.frame(maxWidth: .infinity, alignment: .center)
你可以使用SwiftUI的这个属性
multilineTextAlignment
TextAlignment。
VStack {
Text("Your Text")
.multilineTextAlignment(.center)
}
我猜SwiftUI想让我们使用像堆栈这样的包装器。
因此,不要写类似Text("Hello World").aligned(.leading)这样的东西,而是鼓励这样做:
VStack(alignment: .leading) {
Text("Hello World")
}
如果你想为文本保持恒定的宽度,“. multilinetextalignment (.leading)”在只有一行文本之前不会起任何作用。
这是对我有效的解决方案:
struct LeftAligned: ViewModifier {
func body(content: Content) -> some View {
HStack {
content
Spacer()
}
}
}
extension View {
func leftAligned() -> some View {
return self.modifier(LeftAligned())
}
}
用法:
Text("Hello").leftAligned().frame(width: 300)