如何水平居中于SwiftUI中的视图组的视图

时间:2019-11-22 00:34:59

标签: layout swiftui

我正在尝试在底部水平排列两组标签(“ <<”,“ <”,“ ^”,“>”,“ >>”,“ []”)和(“ M”)使用SwiftUI的屏幕的约束,约束是(“ M”)组位于屏幕的右下角,而(“ <<”,“ <”,“ ^”,“>”,“ >>” ,“ []”)组的居中位置,以使“ ^”元素与屏幕的水平中心对齐。

我尝试过:

        VStack {
            Spacer()
            HStack {
                Spacer()
                Spacer()
                HStack.init(spacing: 4) {
                    Text("<<")
                    Text("<")
                    Text("^") // this view should be aligned to horizontal center of screen
                        .padding([.leading, .trailing], 16)
                    Text(">")
                    Text(">>")
                    Text("[]")
                        .padding(.leading, 8)
                }
                Spacer()
                Text("M")
                    .padding(2)
            }
        }

如下所示:

enter image description here

我不知道如何约束“ ^”使其与水平中心对齐。

使用自动布局,通过将“ ^”的center-x锚定到父中心x锚点,然后将其余元素相应地锚定到“ ^”,其中“ M”将被锚定,我可以很容易地做到这一点右下角的锚点。

1 个答案:

答案 0 :(得分:0)

一个简单的解决方案是在.hidden()修饰符的两边使用相同长度的文本。

(我在这里使用“组”,因为我已超过10个极限视图)

VStack {
    Spacer()
    HStack {
        Group {
            Text("M").hidden()
            Spacer()
            Text("[]").hidden()
            Text("<<")
            Text("<")
        }
        Group {
            Text("^")
            Text(">")
            Text(">>")
            Text("[]")
            Spacer()
            Text("M")
        }
    }
}