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()
        }