SwiftUI - 如何获取 ScrollView 内容的大小(高度)

Posted

技术标签:

【中文标题】SwiftUI - 如何获取 ScrollView 内容的大小(高度)【英文标题】:SwiftUI - How to get size (height) of ScrollView content 【发布时间】:2020-05-28 10:46:35 【问题描述】:

我想确定我的(垂直)ScrollView 中内容的高度。

ScrollView   
    //My Content

这可能吗?我尝试了一些方法,但似乎没有任何效果。

不幸的是,仅使用GeometryReader 不起作用,因为无论ScrollView 中的内容是什么,它都会返回10 的值

谢谢!

【问题讨论】:

可以考虑this my solution for List。它也可以适应动态ScrollView 【参考方案1】:

这是一种实际获取heightScrollView 内容的方法。

CZ54 的答案似乎很直观,但它总是返回 10 的高度,这是不正确的!。

我们必须改为读取内容的高度。 GeometryReader 直接在 ScrollView 内部不会这样做。一种可能的方法是使用.background/.overlay

struct ContentView: View 

    var body: some View 
        ScrollView 
            ForEach(0..<1000)  i in
                Text("\(i)")
            
            .background(
                GeometryReader  proxy in
                    Color.clear.onAppear  print(proxy.size.height) 
                
            )
        
    

我们得到20500.0 的输出,这是正确的。

【讨论】:

【参考方案2】:

您可以使用GeometryReader:

 ScrollView 
        GeometryReader  geometry in
         //print(geometry.size.height) 
       
    

【讨论】:

谢谢,这个我已经试过了,它总是打印 10.0。这似乎不起作用。

以上是关于SwiftUI - 如何获取 ScrollView 内容的大小(高度)的主要内容,如果未能解决你的问题,请参考以下文章

SwiftUI - 如何在运行时更改内部内容后获取 ScrollView 内容高度

获取 SwiftUI 中 ScrollView 的当前位置?

ScrollView 位置数据 / SwiftUi

SwiftUI ScrollView 不显示从 ObservableObject 获取的结果

获取 SwiftUI ScrollView 的当前滚动位置

SwiftUI — 如何在 ScrollView 中显示倒计时?