SwiftUI如何将表单中的文本居中?
SwiftUI如何将表单中的文本居中?,swiftui,Swiftui,.multilitextalignment(.center)如果文本位于表单内,则该项目如何居中 Form { Text("I am left aligned") Text("Why won't I center?").multilineTextAlignment(.center) } 这很有效 Form { Text("I am left aligned") Text("I am centered!") .frame(minWidth: 0, maxW
.multilitextalignment(.center)
如果文本
位于表单
内,则该项目如何居中
Form {
Text("I am left aligned")
Text("Why won't I center?").multilineTextAlignment(.center)
}
这很有效
Form {
Text("I am left aligned")
Text("I am centered!")
.frame(minWidth: 0, maxWidth: .infinity, minHeight: 0, maxHeight: .infinity, alignment: .center)
}
您可以将文本包装到
HStack
:
Form {
Text("I am left aligned")
HStack {
Spacer()
Text("I am centered!")
Spacer()
}
}
如果您需要将多个项目居中放置在表单的中心,下面是一个接受符合视图的对象的结构,供您显示:
struct CenterInForm<V: View>: View {
var content: V
init(_ content: V) { self.content = content }
var body: some View {
HStack {
Spacer()
content
Spacer()
}
}
}
如果一个HStack中有两个元素(即2个文本),并且需要将第二个文本放在中间,那么一个小技巧就是插入第三个隐藏元素,就像第一个一样
HStack(alignment: .center) {
Button(action: {
print("later...")
}) {
Text("Later")
}
.font(font)
Text("Centered Text")
.foregroundColor(SwiftUI.Color(.white))
.frame(minWidth: 0,
maxWidth: .infinity,
minHeight: 0,
maxHeight: .infinity,
alignment: .center)
Button(action: {
print("later...")
}) {
Text("Later")
}
.hidden()
}
使用
frame
将文本框扩展到全宽,并使用multilitextalignment
使文本(包括包装文本)居中
表单{
文本(“居中文本,即使换行”)
.frame(最大宽度:。无穷大)
.multilitextalignment(.center)
}
尝试删除除对齐部分之外的所有参数。删除所有其他参数不会创建所需的参数effect@PaFi是的,消除其他争论是不起作用的,这是一种疯狂的行为。因为最小值和最大值都是零和无穷大。@PaFi您可以去掉除maxWidth
之外的所有维参数。您需要这样做才能使文本块填满整个宽度,从而使居中不仅仅发生在屏幕左侧的块上。仅使用frame
不会使包装文本在所有行上居中。为此,该死,我觉得我应该自己能弄明白。
HStack(alignment: .center) {
Button(action: {
print("later...")
}) {
Text("Later")
}
.font(font)
Text("Centered Text")
.foregroundColor(SwiftUI.Color(.white))
.frame(minWidth: 0,
maxWidth: .infinity,
minHeight: 0,
maxHeight: .infinity,
alignment: .center)
Button(action: {
print("later...")
}) {
Text("Later")
}
.hidden()
}