Списки SwiftUI и OnAppear - PullRequest
       1

Списки SwiftUI и OnAppear

1 голос
/ 04 февраля 2020

Я заметил странное поведение событий 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)
    }
}

... Я ожидаю, что команда печати будет запускаться пару раз при загрузке, а затем продолжит печать, когда я прокручиваю вниз. Вместо этого он печатает 20 раз за раз, затем снова, когда я начинаю прокручивать вниз.

Есть мысли?

1 Ответ

0 голосов
/ 04 февраля 2020

Я думаю, что ведет себя как ожидалось.

Для меня это печаталось 15 раз на симуляторе с iPhone 7 и все 20 раз на симуляторе с iPhone 11.

Я внес небольшое изменение в print("BOOOOM \(index)")

Вероятно, существует баланс с производительностью и ресурсами, которые список поддерживает в фоновом режиме.

Загрузка слишком мала, и пользователь будет "застревать", если слишком быстрая прокрутка и слишком большая загрузка и замедление анимация прокрутки.

...