我想问你一些帮助。我试图使用 geometry 捕获 VStack高度,然后基于该 VStack高度值,计算其子元素的高度(在VStack内部)。
Image of my current view of VStack
我在VStack之外使用了 .frame 来填充整个屏幕。然后,我使用 .borde r目视检查它是否真正填满了屏幕(工作正常)
.frame(minWidth: 0,maxWidth: .infinity,minHeight: 0,maxHeight: .infinity,alignment: Alignment.topLeading)
问题可以在VStack内部看到,高度显示为GCFloat734。即使边框大小大得多。
struct BodyView: View {
@State var stackHeight : CGFloat = 0
var body: some View {
GeometryReader { geometry in
VStack {
Text("VStack size: \(self.stackHeight)")
.bold()
.frame(maxWidth: .infinity,alignment: .leading)
.padding(.horizontal)
.background(Color.green)
}
.frame(minWidth: 0,alignment: Alignment.topLeading)
.onAppear{
self.stackHeight = geometry.size.height
}
.border(Color.purple,width: 5)
}
}
}
struct BodyView_Previews: PreviewProvider {
static var previews: some View {
BodyView()
}
}
完成加载后,如何捕获VStack的实际大小?
当我触发(onAppear)时,VStack的高度看起来正确,但是我需要立即捕获它。