AnimatableModifier仅适用于递增值,不适用于递减SwiftUI

问题描述

我正在使用AnimatableModifier对[[46],[11],[3],[23],[22],[33],[12]] 值进行动画处理。递增值时动画工作正常,而递减时动画不工作。

所以我有一个列表,其中有项目。所有这些项的总数在视图顶部列出。当插入一个新项目时,总数将增加,而我得到该动画。但是,在删除项目时我没有获得动画。只会降低它的值。

"basicCard": {
  "title": "","subtitle": "","formattedText": "","image": {},"buttons": [
    {
      "title": "1-855-xxx-xxxx","openUrlAction": {
        "url": "tel:+1855xxxxxxx","urlTypeHint": 0
      }
    },{}
  ]
}

}

这是我使用此修饰符的方式:

CGFloat

struct TotalExpenseAnimator: AnimatableModifier { var pct: CGFloat = 0.0 var animatableData: CGFloat { get { pct } set {pct = newValue } } func body(content: Content) -> some View { VStack(spacing: 0) { content TotalExpenseView2(pct: pct) } } } struct TotalExpenseView2: View { let pct: CGFloat var body: some View { HStack(spacing: 0) { Text(formatPrices(price: self.pct)) //.bold() .font(Font.system(.title2)) // .padding(.top,8) .foregroundColor(Color("TextColorWidget")) }.onChange(of: self.pct) { (newVal) in print(newVal) //-> val changes here so this whole thing is getting called } } func formatPrices(price: CGFloat) -> String { let numberFormatter = NumberFormatter() numberFormatter.numberStyle = .currency numberFormatter.locale = Locale.current numberFormatter.maximumFractionDigits = 2 return numberFormatter.string(from: price as NSNumber) ?? "" } 是一个 Text("Total Expense") .font(Font.footnote) .foregroundColor(Color.secondary) .modifier(TotalExpenseAnimator(pct: ListTotalExpense(financedList: self.financedList).totalFloat)) ,我将其传递给该列表,并计算所有费用并在ListTotalExpense中获得总额

之所以调用observableObject,是因为我可以获得新值(递减值),但是根本没有动画。是因为在删除行时刷新了整个视图,导致动画被强制绕过了吗?

任何想法/建议将不胜感激!谢谢:)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...