swift - SwiftUI:在不动画内容更改的情况下动画列表中的更改
问题描述
我在 SwiftUI 中有一个简单的应用程序,它显示 a List
,每个项目都是 aVStack
有两个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)
推荐阅读
- ruby-on-rails - 捆绑安装不适用于 bundler 2.0.1 的 rails-4.2.6
- r - 使用 ggplot 为绘图中的特定点着色
- tfs - 调用目标已引发 TFS 2017 构建定义异常
- bash - 如何从具有 bash 文件名的列表中读取全局变量?
- azure-devops - Azure DevOps 2019 为什么我们的 Burndown 图表中没有跟踪故事点
- python - 按位或“|” 与 Python 中两个的正幂的加法“+”
- node.js - 如何使用自定义 url 和文件夹将图像上传到 cloudinary
- excel - 与包含/排除匹配的复杂查找
- python - “关闭和停止”功能在 macOs High Sierra 上的 Canopy 下启动的 jupyter 笔记本中不起作用
- python - psutil.cpu_times() 返回的时间“单位”是多少?