【发布时间】:2020-04-02 09:15:08
【问题描述】:
在 SwiftUI 中给定一个列表,一旦开始平移,列表中视图的更新似乎会暂停,直到滚动停止。有没有办法防止这种情况发生?
考虑以下代码:
class Model: ObservableObject, Identifiable {
@Published var offset: CGFloat = 0
let id = UUID()
private var timer: Timer!
init() {
timer = Timer.scheduledTimer(withTimeInterval: 0.5, repeats: true, block: { _ in
self.update()
})
}
func update() {
offset = CGFloat.random(in: 0...300)
}
}
struct ContentView: View {
@ObservedObject var model1 = Model()
@ObservedObject var model2 = Model()
@ObservedObject var model3 = Model()
@ObservedObject var model4 = Model()
var body: some View {
List {
ForEach([model1, model2, model3, model4]) {
Rectangle()
.foregroundColor(.red)
.frame(width: $0.offset, height: 30, alignment: .center)
.animation(.default)
}
}
}
}
将导致这种行为:
【问题讨论】:
-
我不确定,但我认为 SwiftUI 不可能。它可能适用于 UIKit...