0

我在尝试确定 ScrollView 内视图的高度时遇到问题

struct ContentView: View {    
    var body: some View {
        ScrollView{
             GeometryReader { geometry in
                   VStack{
                        ForEach(0..<90) { index in
                             Text("test \(geometry.size.height)")
                        }
                   }
             }
        }
    }
}

geometry.size.height 始终为 10.000。

我该如何纠正这个意外的结果?

非常感谢!

4

1 回答 1

2

我不确定你要去哪里。

GeometryReader读取提供给视图的大小,而不是视图的大小。GeometryReader您可以通过将 a放入 中来了解视图.overlayVStack大小,因为在创建叠加层时,VStack已经确定了视图的大小,并且该大小将提供给叠加层。

struct ContentView: View {
    var body: some View {
        ScrollView{
           VStack{
                ForEach(0..<90) { index in
                     Text("test 000000000000")
                         .opacity(0)
                }
           }
           .overlay(
                GeometryReader { geometry in
                    VStack {
                        ForEach(0..<90) { index in
                            Text("test \(geometry.size.height)")
                        }
                    }
                }
           )
        }
    }
}
于 2020-10-18T21:08:34.420 回答