#ios #animation #swiftui
Вопрос:
У меня есть простое ForEach
отображение 5 или 10 Text
просмотров в соответствии с expanded
флагом. все завернуто по горизонтали 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))
}
}
Комментарии:
1. Что произойдет, если вы установите
bounces
значение false?2. @DVN-Анакин то же самое 🙁
Ответ №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!
}
}