【发布时间】:2021-03-17 00:43:51
【问题描述】:
我一直在尝试使用 ScrollViewReader 和 withAnimation 为 ScrollView 设置动画。
我无法弄清楚为什么这两个动画不起作用,无论是来自 Button 还是 .onAppear?
import SwiftUI
struct ScrollView2: View {
@State private var scrollText = false
var body: some View {
ScrollViewReader { scrollView in
ScrollView {
Button("Scroll to bottom") {
withAnimation(.linear(duration: 30)) {
scrollView.scrollTo(99, anchor: .center)
}
}
ForEach(0..<100) { index in
Text(String(index))
.id(index)
}
.onAppear(perform: {
withAnimation(.linear(duration: 30)) {
scrollView.scrollTo(scrollText ? 99 : 1, anchor: .center)
}
scrollText.toggle()
})
}
}
}
}
【问题讨论】:
-
您的代码对我有用。如果您在画布上进行预览,请确保您处于“实时预览”状态。
-
据报道,只有 .default 动画在这种情况下有效,与您提供的动画无关。
-
嘿!非常感谢您的 cmets。 @nicksarno 我正在寻找的是动画的 30 秒持续时间,但遗憾的是它不起作用。
-
@Asperi,谢谢我尝试用 .default 替换 .linear,效果很好,但没有持续时间:/
-
@Jean-SébastienWallez 感谢您的更新!我在下面发布了一个选项。
标签: ios animation swiftui scrollview