作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
所以我想在 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/
我是一名优秀的程序员,十分优秀!