首页 > 解决方案 > SwiftUI - 如何获取 ScrollView 内容的大小(高度)

问题描述

我想确定我的 (vertical) 内内容的高度ScrollView

ScrollView {  
    //My Content
}

这可能吗?我已经尝试了一些东西,但似乎没有任何效果。

不幸的是,简单地使用GeometryReader是行不通的,因为它返回一个值,10不管里面有什么内容ScrollView

谢谢!

标签: iosswiftswiftui

解决方案


这是一种实际获取内容height的方法ScrollView

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正确的输出。


推荐阅读