我想问你一些帮助。我试图使用geometry
捕获VStack height,然后基于该VStack height值,计算其子元素的高度(在VStack内部)。Image of my current view of VSatck
我在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, 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的高度看起来正确,但是我需要立即捕获它。
谢谢
我想问你一些帮助。我正在尝试使用几何图形捕获VStack的高度,然后基于该VStack的高度值,计算其子元素的高度(在VStack内部)。我当前的图像...
如果我理解您的问题,您将非常接近-您只需要使用GeometryProxy
类型:
GeometryProxy