Ios 当我在模型中使用withAnimation时,没有动画发生,为什么?

Ios 当我在模型中使用withAnimation时,没有动画发生,为什么?,ios,swift,mvvm,swiftui,Ios,Swift,Mvvm,Swiftui,这是我的ViewModel import SwiftUI class SetGameVM: ObservableObject { @Published var model: SetGame = SetGame() var cards: Array<SetGame.Card> { model.cards } func selectCard(card: SetGame.Card) { model.sele

这是我的
ViewModel

import SwiftUI

class SetGameVM: ObservableObject {
    @Published var model: SetGame = SetGame()
    
    var cards: Array<SetGame.Card> {
        model.cards
    }
   
    func selectCard(card: SetGame.Card) {
        model.selectCard(card: card)
    }
    
    func dealCards() {
        model.dealMoreCards()
    }

    func reset() {
        model = SetGame()
    }
}
import SwiftUI

struct SetGame {
    var cards: Array<Card>

 mutating func selectCard(card: Card) -> Bool {
        ...
       withAnimation {
        dealMoreCards()
       }
       ...
   }
}
如果我在
viewmodel
View
中使用
withAnimation
,则动画会按预期发生,否则如果我在包装一些更改的
模型中使用
withAnimation
时,
视图
仍会反映这些更改,但不会发生动画。

在视图模型中执行此操作

func selectCard(card: SetGame.Card) {
    withAnimation {                       // << here !!
       model.selectCard(card: card)
    }
}
func选择卡(卡:SetGame.card){
使用动画{/在视图模型中执行

func selectCard(card: SetGame.Card) {
    withAnimation {                       // << here !!
       model.selectCard(card: card)
    }
}
func选择卡(卡:SetGame.card){

动画片{//当你在结构中更改属性时,你会得到一个新的属性。我想这就是你看不到任何动画的原因。
mutating
函数是否仍然创建一个新的属性?当你在结构中更改属性时,你会得到一个新的属性。我想这就是你看不到任何动画的原因。
mutating函数仍然会创建一个新的?我知道这会起作用,但有时我需要一些状态更改设置动画,而其他一些则不会,所有这些更改都是在调用
selectCard
方法时发生的,因此我想将这些更改包装到
模型中
为此,您必须使用
.animation(…,value:)
modifier
值应该是什么,一个
@State
属性
,我尝试过这两个动画总是像值总是在变化一样运行,但实际上不是。例如,我知道这会起作用,但有时我需要一些状态变化设置为动画,而另一些则不设置,所有这些变化都是在调用时发生的e使用
selectCard
方法,因此我想将这些更改包装在
模型中
为此,您必须使用
.animation(…,value:)
修改器
值应该是什么,一个
@状态
属性
,我尝试过这两种动画总是像值总是在变化一样运行,但实际上不是这样。例如,请参见此