我有一個簡單的根據標志ForEach顯示 5 或 10 個Text視圖expanded。一切都被水平包裹,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))
}
}

uj5u.com熱心網友回復:
您需要為影片使用值:
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!
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/352444.html
