Невозможно установить скорость анимации прокрутки 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