Невозможно установить скорость анимации прокрутки SwiftUI ScrollViewReader

В приложении SwiftUI с потоком SwiftUI для iOS15 я пытаюсь замедлить анимацию скорости прокрутки ScrollViewReader. В приведенном ниже примере ясно, что прокрутка не занимает 100 секунд. В то время как анимация в этом примере визуально выглядит нормально, в реальном приложении я программно вызываю scrollTo, и это происходит почти мгновенно и выглядит совершенно рывками. Я что-то упускаю?

Вот пример:

      struct ListView: View {

    let colors: [Color] = [.red, .green, .blue]
    @State private var shouldChangeRow: Bool = false
    @State private var number: Int = 100

    var body: some View {
    
        VStack {
            ScrollViewReader { proxy in
                List {
                    ForEach(0..<number) { i in
                        Text("Row \(i)")
                            .font(.title)
                            .frame(minWidth: 0, maxWidth: .infinity)
                            .frame(height: 50)
                            .background(colors[i % colors.count])
                            .id(i)
                    }//for each
                }//list
                .onChange(of: shouldChangeRow) { _ in
                    withAnimation(Animation.easeInOut(duration: 100)) {
                        proxy.scrollTo(Int.random(in: 0..<number), anchor: .top)
                    }
                }//on change
            }//reader
            .frame(height: 500)
        
            Button("Change") {
                withAnimation {
                    shouldChangeRow.toggle()
                }
            }
            .buttonStyle(.borderedProminent)
            .padding()

        }//v
    }
}

Любое руководство будет оценено. Xcode 13.2.1, iOS 15

0 ответов

Другие вопросы по тегам