如果ScrollView中没有很多对象,为什么我不能动态更改VStack中的内容?令人惊讶的是,如果有很多对象,那么一切都会发生漂亮的变化,但如果对象很少,那么滚动只会向下运行(因此,try 向上滚动时可能会出现故障)
我的代码:
import Introspect
struct SwiftUIView: View {
@StateObject var myCoord = MyCoord()
var body: some View {
VStack {
Color.red
.frame(height: myCoord.height)
ScrollView {
ForEach(0..<20) { _ in
Color.green
.frame(height: 20)
}
.background(Color.red)
}
.introspectScrollView { scroll in
scroll.delegate = myCoord
}
}
}
}
class MyCoord: NSObject, UIScrollViewDelegate, ObservableObject {
let maxSize: CGFloat = 76
let minSize: CGFloat = 56
@Published var height: CGFloat = 76
func scrollViewDidScroll(_ scrollView: UIScrollView) {
let size = maxSize - scrollView.contentOffset.y
height = min(maxSize, max(minSize, size))
}
}