我想请你帮忙。我正在尝试使用几何体捕获VStack 高度,然后基于该VStack 高度值,计算其子元素的高度(在 VStack 内)。
我在VStack之外使用 .frame 来填充整个屏幕。然后我用.borde r 目视检查它是否真的填满了屏幕(它工作正常)
.frame(minWidth: 0, maxWidth: .infinity, minHeight: 0, maxHeight: .infinity, alignment: Alignment.topLeading)
问题可以在 VStack 内部看到,高度显示为 GCFloat 734。即使边框大小要大得多。
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, maxWidth: .infinity, minHeight: 0, maxHeight: .infinity, 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 高度显示正确,但是我需要立即捕获它。