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:)
修改器值应该是什么,一个@状态
或属性
,我尝试过这两种动画总是像值总是在变化一样运行,但实际上不是这样。例如,请参见此