1

当计数值为静态时,我可以根据以下代码打印滚动视图内容高度

struct ContentView: View {

@State var countValue : Int = 1000
    var body: some View {
        ScrollView {
            ForEach(0..<countValue) { i in
                Text("\(i)")
            }
            .background(
                GeometryReader { proxy in
                    Color.clear.onAppear { print(proxy.size.height) }
                }
            )
        }
    }
}

但是当我在运行时更新 countValue 时,我无法打印新的滚动视图 contentsize 高度

请参考以下代码

struct ContentCountView: View {

@State var countValue : Int = 100
    var body: some View {
        ScrollView {
            ForEach(0..<countValue, id: \.self) { i in
                HStack{
                    Text("\(i)")
                    Button("update"){
                        countValue = 150
                    }
                }
                
            }
            .background(
                GeometryReader { proxy in
                    Color.clear.onAppear {
                        print(proxy.size.height)
                        
                    }
                }
            )
        }
    }
}

如何获得新的滚动视图内容大小高度?请解释。

4

1 回答 1

1

proxy.size.height正在更新,将print语句放入onAppear仅将打印限制在首次出现时。尝试这个:

.background(
    GeometryReader { proxy in
         let _ = print(proxy.size.height)
         Color.clear
    }
)
于 2021-11-12T14:18:54.073 回答