On Appear 仅适用于第一个实例...我该如何更改它
On Appear only works for 1st instance... how can I change that
我有一段代码可以让我的文本出现在屏幕中间并短暂地进出,完美。但它只在第一次调用该函数时执行。以下时间显示文本但不显示动画。
VStack {
GameView(showText: self.$showText, imageName: self.$imageName)
Button(action: {
withAnimation {
self.showText.toggle()
self.attempts += 1
}
}, label: {
Text("Show / Hide Text")
})
}
if self.showText {
VStack {
Spacer()
HStack {
Spacer()
Image(imageName)
//animation here
.scaleEffect(scale)
.onAppear{
let baseAnimation = Animation.easeInOut(duration: 0.5)
let repeated = baseAnimation.repeatForever(autoreverses: true)
return withAnimation(repeated) {
self.scale = 0.5
}
}
Spacer()
}
Spacer()
}
}
}
我应该使用 On Appear 以外的东西吗?
谢谢
一直在努力
隐藏时不会重置 scale
状态,因此下一次显示时状态不会发生变化,因此没有动画。只需在下面添加 .onAppear
.onDisappear {
self.scale = 1
}
我有一段代码可以让我的文本出现在屏幕中间并短暂地进出,完美。但它只在第一次调用该函数时执行。以下时间显示文本但不显示动画。
VStack {
GameView(showText: self.$showText, imageName: self.$imageName)
Button(action: {
withAnimation {
self.showText.toggle()
self.attempts += 1
}
}, label: {
Text("Show / Hide Text")
})
}
if self.showText {
VStack {
Spacer()
HStack {
Spacer()
Image(imageName)
//animation here
.scaleEffect(scale)
.onAppear{
let baseAnimation = Animation.easeInOut(duration: 0.5)
let repeated = baseAnimation.repeatForever(autoreverses: true)
return withAnimation(repeated) {
self.scale = 0.5
}
}
Spacer()
}
Spacer()
}
}
}
我应该使用 On Appear 以外的东西吗?
谢谢 一直在努力
隐藏时不会重置 scale
状态,因此下一次显示时状态不会发生变化,因此没有动画。只需在下面添加 .onAppear
.onDisappear {
self.scale = 1
}