我已经写了一个带有swiftui的AsyncImgView,并在列表单元格中使用.
AsyncImgView使用任务修饰符从缓存或网络下载IMG时,在iOS16之前一切正常,但在iOS16我发现,而I scroll the list的新单元的AsyncImgView doesn't call task modifier,所以新的AsyncImageView不会下载IMG,除非再次touch 它.我发现其他一些与用户界面无关的修饰符也存在同样的问题.
我试过在主体中调用下载函数,而不是在任务修饰符中使用,它很管用,但我认为这不是一个好主意.
有谁知道吗?
Demo code:个
滚动列表时,无法打印任务修改器中的所有单元格名称
struct TaskDemo: View {
var models: [TaskModel] = {
var m = [TaskModel]()
for idx in 0...99 {
m.append(TaskModel(id: idx))
}
return m
}()
var body: some View {
List(models){model in
TaskCell(name: model.name)
.frame(height: 100)
}
}
}
struct TaskModel: Identifiable {
var id: Int
var name: String { String(id) }
}
struct TaskCell: View {
@State var name: String
var body: some View{
Text(name)
.task {
print("task default modifier \(Thread.current) \(name)")
}
}
}
the pic can show that I scroll to 31 cell but only print the first 17 cells' name