因此,我想在SwiftUI中对图像进行动画处理:用户点击图像后,图像应以色彩饱和度突出显示(红色或绿色,以指示用户是否点击了正确的图像)。但是几秒钟后,它应该又恢复了正常状态-也就是从开始看。
我还尝试过make a custom highlight button,该方法也可以使用,但看起来好像没有动画...
当前,我使用的ZStack
可以为Color
叠加层设置动画,如果用户轻按它,但是我却无法获得完成效果或类似的东西?如何在没有用户交互的情况下“撤消”动画?
@State var redAlpha = 0.0
var badImg: some View{
ZStack{
Image(badImgName)
.resizable()
.scaledToFit()
Button(action: {
withAnimation {
self.redAlpha = 0.5
}
}) {
Color.clear
}
Color.red.opacity(self.redAlpha) //<--overlay
}
}
答案 0 :(得分:1)
这是在延迟一段时间后可以为视图更改制作动画的方式。 您也可以将按钮更改为.tapAction
ZStack {
Image(badImgName)
.resizable()
.scaledToFit()
Button(action: {
withAnimation {
self.redAlpha = 0.5
}
DispatchQueue.main.asyncAfter(deadline: .now() + 2.0) {
withAnimation{ self.redAlpha = 0.0 }
}
}) {
Color.clear
}
Color.red.opacity(self.redAlpha) //<--overlay
}
使用.onAppear .onDisappear可以轻松地在视图出现或消失时调用动画。