Swiftui 列表动画
Swiftui List animation
我正在尝试为点列表的内容制作动画。该列表从最高到最低排序,因此它会重新组织为较低的值高于上面的行。通过在列表上使用 .animation(.default) 动画效果很好,但是,当我打开视图时它也会为整个列表设置动画。整个列表就位了。我希望列表是静态的,只有行在需要重新排序时移动
List {
ForEach(players) { player in
Text(player.score)
}
}.animation(.default)
要仅在 State
数据发生变化时设置动画,请使用 withAnimation
围绕您更改的部分而不是整个列表:
import SwiftUI
struct Player: Identifiable {
var id = UUID()
var score: String
}
struct ContentView: View {
@State var players: [Player] = [
.init(score: "2"),
.init(score: "3"),
.init(score: "6"),
.init(score: "1")]
var body: some View {
VStack {
Button("shuffle") {
withAnimation(.easeIn) {
players.shuffle()
}
}
List {
ForEach(players) { player in
Text(player.score)
}
}
}
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
我正在尝试为点列表的内容制作动画。该列表从最高到最低排序,因此它会重新组织为较低的值高于上面的行。通过在列表上使用 .animation(.default) 动画效果很好,但是,当我打开视图时它也会为整个列表设置动画。整个列表就位了。我希望列表是静态的,只有行在需要重新排序时移动
List {
ForEach(players) { player in
Text(player.score)
}
}.animation(.default)
要仅在 State
数据发生变化时设置动画,请使用 withAnimation
围绕您更改的部分而不是整个列表:
import SwiftUI
struct Player: Identifiable {
var id = UUID()
var score: String
}
struct ContentView: View {
@State var players: [Player] = [
.init(score: "2"),
.init(score: "3"),
.init(score: "6"),
.init(score: "1")]
var body: some View {
VStack {
Button("shuffle") {
withAnimation(.easeIn) {
players.shuffle()
}
}
List {
ForEach(players) { player in
Text(player.score)
}
}
}
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}