SwiftUI列表和OnAppear

时间:2020-02-04 00:30:24

标签: swiftui swiftui-list

我注意到列表视图的OnAppear事件有一些奇怪的行为。我认为只要在屏幕上出现视图,就可以运行OnAppear闭包,但是在加载列表时,它似乎可以一次全部运行。

例如以下代码:

@State var rows: [String] = Array(repeating: "Item", count: 20)

var body: some View {

    List(0..<rows.count, id: \.self) { index in
        Text(verbatim: self.rows[index])
            .onAppear {
                print("BOOOOM")
            }
            .frame(height:400)
    }
}

...我希望print命令在加载时运行几次,然后在我向下滚动时继续打印。而是一次打印20次,然后在我开始向下滚动时再次打印。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我认为它的行为符合预期。

对我来说,它在iPhone 7的Simulator上打印了15次,在iPhone 11的Simulator上打印了20次。

我对print("BOOOOM \(index)")

做了些微改动

列表在后台遵循的性能和资源之间可能存在平衡。

加载得太少,如果滚动得太快而不是加载得太多并放慢了滚动动画,用户将“卡住”。