有没有一种方法可以在ZStack中使用Spacer()? (SwiftUI)

时间:2020-09-18 00:51:50

标签: swiftui

我在通过ZStack的矩形顶部上有文本,我想知道是否有一种方法可以限制矩形内的Spacer()数量。

dict

enter image description here

外观如何

tl; dr: 我希望使用的是“ Hello World”,当使用Spacer()时,它不会经过矩形的边界。我怎样才能做到这一点?谢谢

1 个答案:

答案 0 :(得分:1)

我认为您可以通过仅使用ZStack并指定.topTrailing对齐方式来实现:

struct ContentView: View {
    
    var body: some View {
        GeometryReader { geometry in
            ZStack(alignment: .topTrailing) {
                Rectangle()
                    .frame(height: geometry.size.height/3.25)
                    .shadow(radius: 5)
                    .foregroundColor(Color.white)

                Text("Hello World")
                    .padding(.trailing, 40)
            }
            .frame(maxHeight: .infinity)
        }
    }
}

或者:

您可以放弃ZStack,将Text设为.overlay()中的Rectangle()。在这里,我保留了您的VStack,只是将其设为overlay,以防止其超出Rectangle

struct ContentView: View {
    
    var body: some View {
        GeometryReader { geometry in
            Rectangle()
                .frame(height: geometry.size.height/3.25)
                .shadow(radius: 5)
                .foregroundColor(Color.white)
                .overlay(
                    VStack {
                        HStack {
                            Spacer()
                            Text("Hello World")
                        }.padding(.trailing, 40)
                    
                        Spacer()
                    }
                )
                .frame(maxHeight: .infinity)
        }
    }
}