我在通过ZStack的矩形顶部上有文本,我想知道是否有一种方法可以限制矩形内的Spacer()数量。
dict
外观如何
tl; dr: 我希望使用的是“ Hello World”,当使用Spacer()时,它不会经过矩形的边界。我怎样才能做到这一点?谢谢
答案 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)
}
}
}