SwiftUI VStack右对齐单个元素

时间:2020-08-18 01:30:21

标签: ios swiftui alignment vstack

我是SwiftUI的新手,这次我试图将单个元素(图像)向右对齐,然后将其余内容对齐到中心。

就像在Spacer()上使用HStack而在另一端使用时一样。

我读到有关.alignmentGuide的内容,这有点令人困惑,但是我尝试通过这种方式使用它:

struct ContentView: View {
    var body: some View {
        VStack {
            HStack {
                Text("Hello!").alignmentGuide(.trailing) {
                    v in v[HorizontalAlignment.trailing]
                }
            }
            Text("Hello, World!")
            Spacer()
        }
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}

但这完全没有改变,两个Text都居中对齐。

我尝试将.alignmentGuide的{​​{1}}代码移到}的{​​{1}}之后,结果相同。

这是我想要做的,在使用情节提要之前,我会使用一些约束来执行此操作,例如将正确的约束设置为8或类似的值,但是在执行此操作时我有点迷失了SwiftUI方式。

enter image description here

1 个答案:

答案 0 :(得分:2)

这里是一种方法:

struct ContentView: View {
    var body: some View {
        VStack {
            HStack {
                Spacer()
                Text("Hello!")
                    .padding(.trailing, 8)
            }
            Text("Hello, World!")
            Spacer()
        }
    }
}

HStackSpacer()一起使用,将Text("Hello!")推向右侧。添加.padding(.trailing, 8)使其与右侧边缘保持8点距离。