gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-11-01 06:51:01 25 4
gpt4 key购买 nike

所以我想在 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
}
}

最佳答案

这就是您可以在延迟一段时间后为 View 更改设置动画的方法。您也可以将按钮更改为 .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
}

您可能需要在 View 出现或消失时调用动画,这很容易用 .onAppear .onDisappear 实现

关于swift - 如何在 SwiftUI 中为 Start->Max->Start 设置动画?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57041135/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com