如何在SwiftUI中为Start-> Max-> Start设置动画?

时间:2019-07-15 13:46:17

标签: swift animation swiftui

因此,我想在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
    }
}

1 个答案:

答案 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可以轻松地在视图出现或消失时调用动画。