[英]Animated Expand/Collapse group in horizontal ScrollView (SwiftUI)
我有一個簡單的ForEach
根據expanded
標志顯示 5 或 10 個Text
視圖。 一切都包含在水平ScrollView
因為文本可能很長。 展開組時的動畫看起來不錯,但是當折疊組時有一個小的彈跳,視圖會上下移動。 如果我刪除 ScrollView,則不會發生這種情況。 知道什么會導致這種彈跳嗎?
struct ContentView: View {
@State var expanded = false
let colors: [Color] = [.red, .green, .blue, .orange, .blue, .brown, .cyan, .gray, .indigo, .mint]
var body: some View {
VStack {
ScrollView(.horizontal) {
VStack(spacing: 20) {
ForEach(colors.prefix(upTo: expanded ? 10 : 5), id: \.self) { color in
Text(color.description.capitalized)
}
}
}
Button("Expand/collapse") {
expanded.toggle()
}
Spacer()
}.animation(.easeIn(duration: 1))
}
}
您需要為動畫使用值:
struct ContentView: View {
@State var expanded = false
let colors: [Color] = [.red, .green, .blue, .orange, .blue, .red, .green, .blue, .orange, .blue]
var body: some View {
VStack {
ScrollView(.horizontal) {
VStack(spacing: 20) {
ForEach(colors.prefix(upTo: expanded ? 10 : 5), id: \.self) { color in
Text(color.description.capitalized)
}
}
}
Button("Expand/collapse") {
expanded.toggle()
}
Spacer()
}.animation(.easeIn(duration: 1), value: expanded) // <<: Here!
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.