我在 SwiftUI 中有一个简单的应用程序,显示 List
, 每一项都是一个 VStack
带两个 Text
元素:
var body: some View {
List(elements) { item in
NavigationLink(destination: DetailView(item: item)) {
VStack(alignment: .leading) {
Text(item.name)
Text(self.distanceString(for: item.distance))
}
}
}
.animation(.default)
}
.animate()
在那里是因为我想在 elements
时对列表的更改进行动画处理阵列变化。不幸的是,SwiftUI 还会对内容的任何更改进行动画处理,从而导致奇怪的行为。例如,第二个 Text
在每个项目中更新非常频繁,现在更新将在更新到新内容之前很快显示被截断的标签(最后是 ...
)。那么如何在更新列表内容时防止这种奇怪的行为,但在列表中的元素发生变化时保持动画呢?
如果相关,我正在创建一个 watchOS 应用程序。
最佳答案
以下应该禁用行内部的动画
VStack(alignment: .leading) {
Text(item.name)
Text(self.distanceString(for: item.distance))
}
.animation(nil)
关于SwiftUI:动画列表中的更改而不动画内容更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59972470/