Har*_*360 2 animation transition list ios swiftui
请参阅演示该问题的示例视图:
struct ListRemovalTransition: View {
let list1 = ["A", "B", "C", "D"]
let list2 = ["A", "E", "F", "G", "H", "I", "J", "K"]
@State var toggle = false
var chosenList: [String] {
toggle ? list1 : list2
}
var body: some View {
VStack {
Toggle(isOn: $toggle) {
Text("Switch List")
}
List(chosenList, id: \.self) { item in
Text(item)
.transition(AnyTransition.opacity.animation(.default))
}
}
.padding()
}
}
struct ListRemovalTransition_Previews: PreviewProvider {
static var previews: some View {
ListRemovalTransition()
}
}
Run Code Online (Sandbox Code Playgroud)
期望的结果是,在不改变位置的情况下删除时,各个行会淡出。相反,发生的事情似乎是所有行在被删除之前首先相互重叠。我已向行文本添加了带有动画的过渡,但这没有影响。
小智 5
只需添加id(:)修改器即可List删除默认动画。然后添加transition(:)修饰符以List实现所需的过渡。它工作完美。我刚刚在 Xcode 11.5 上进行了测试。这是我的代码...
struct ListRemovalTransition: View {
let list1 = ["A", "B", "C", "D"]
let list2 = ["A", "E", "F", "G", "H", "I", "J", "K"]
@State var toggle = false
var chosenList: [String] {
toggle ? list1 : list2
}
var body: some View {
VStack {
Toggle(isOn: $toggle) {
Text("Switch List")
}
List(chosenList, id: \.self) { item in
Text(item)
}
.id(UUID())
.transition(AnyTransition.opacity.animation(.default))
}
.padding()
}
}
Run Code Online (Sandbox Code Playgroud)

谢谢。X_X
| 归档时间: |
|
| 查看次数: |
3830 次 |
| 最近记录: |