onAppear不考虑行的高度

时间:2019-08-16 19:49:29

标签: swiftui

我正在尝试实现异步图像加载,我注意到onAppear正在为前20行(在iPhone XR和iPhone SE上为13行)触发,即使只有3-4行可见。

import SwiftUI


struct ContentView: View {
    var body: some View {
        VStack {
            List {
                ForEach(1..<100) { (i) in
                    RowView(rowId: i)
                    .frame(height: 300)
                }
            }
        }
    }
}


struct RowView : View {
    @State var image: Image = Image(systemName: "photo")

    var rowId: Int

    var body: some View {

        VStack(alignment: .center) {
            HStack {
                Text("Row \(rowId)")
                Spacer()
            }
            self.image
                .resizable()
                .onAppear(perform: {
                    print("Row \(self.rowId) appeared")
                })
            }
    }
}

如果仅用RowView替换Text并删除frame,则前20行确实可见,因此我可以理解为什么会发生这种情况(即与撤消frame时与触发onAppear时的顺序)

有什么方法可以使onAppear仅在该行实际可见时触发?

0 个答案:

没有答案