SwiftUI Как остановить анимацию списка в многоуровневом NavigationView - PullRequest
1 голос
/ 16 января 2020

Я просто хочу остановить анимацию, когда у меня есть многоуровневый список в многоуровневом NavigationView. Может быть, это не «АНИМАЦИЯ», я просто хочу это исправить.

В Xcode версии 11.3.1 (11C504) + iOS 13.2

enter image description here

Код прост, и вы можете узнать, что он зашит.

import SwiftUI

struct TestView: View {
    var body: some View {
        NavigationView {
            List {
                ForEach(1...4, id: \.self) {_ in
                    NavigationLink(destination: AView()) {
                        Text("root")
                    }
                }
            }
        }
    }
}

struct AView: View {
    var body: some View {
        List {
            ForEach(1...4, id: \.self) {_ in
                NavigationLink(destination: BView()) {
                    Text("aview")
                }
            }
        }
    }
}

struct BView: View {
    var body: some View {
        List {
            ForEach(1...4, id: \.self) {_ in
                NavigationLink(destination: BView()) {
                    Text("bview")
                }
            }
        }
    }
}

struct TestView_Previews: PreviewProvider {
    static var previews: some View {
        TestView()
    }
}

1 Ответ

2 голосов
/ 21 января 2020

Хорошо ... Я установил этот неудачный Xcode 11.3.1 ... и вот решение (или обходной путь, в любом случае) - используйте явный .listRowInsets, как в примере ниже (кстати, вставки могут быть любыми значение)

List {
    ForEach(1...1000, id: \.self) {_ in
        NavigationLink(destination: BView()) {
            Text("bview")
        }
    }
    .listRowInsets(EdgeInsets(top: 0, leading: 20, bottom: 0, trailing: 20))
}

Работает для любых динами c Список

...