SwiftUI - 如何在 运行 时间内更改内部内容后获取 ScrollView 内容高度
SwiftUI - How to get ScrollView Content Height after once the inside content is changed in Run time
当计数值为静态时,我可以根据以下代码打印滚动视图内容高度
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 时,我无法打印新的 scrollview 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)
}
}
)
}
}
}
如何获取新的滚动视图内容大小高度?请解释。
proxy.size.height
正在更新,将 print
语句放在 onAppear
中只是将打印限制在它首次出现时。试试这个:
.background(
GeometryReader { proxy in
let _ = print(proxy.size.height)
Color.clear
}
)
当计数值为静态时,我可以根据以下代码打印滚动视图内容高度
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 时,我无法打印新的 scrollview 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)
}
}
)
}
}
}
如何获取新的滚动视图内容大小高度?请解释。
proxy.size.height
正在更新,将 print
语句放在 onAppear
中只是将打印限制在它首次出现时。试试这个:
.background(
GeometryReader { proxy in
let _ = print(proxy.size.height)
Color.clear
}
)