最近开发的时候遇到一个问题,带有动画效果的图片放到NavigationView中,页面初始化的时候,图片会从屏幕左上方进入到指定的位置,参考代码如下 :
import SwiftUI
struct SAnimalView: View {
@State private var isAnimating = false
var body: some View {
NavigationView{
Image("dog")
.rotationEffect(.degrees(isAnimating ? 720:0))
.animation(Animation.easeIn(duration:2))
.onTapGesture {
isAnimating.toggle()
}
}
}
}
实际上,我只需要实现点击图片,图片旋转的效果,所以图片从左上角进入(进入到屏幕的指定位置的时事件跟(duration:2)设置的时间有关)的效果是不需要的,下面提供一个可去除此效果的方案
在苹果开发者文档找到关于animation参数duration的解释,内容如下截图:
所以将动画的duration参数设置为0或负值,就不会对图片设置动画效果,页面初始化的时候自然就不会出现图片从左上角进入页面的动作,然后在动画 触发执行前,动态修改duration参数修改为既定的正值即可使动画效果正常运行,参考代码如下:
import SwiftUI
struct SAnimalView: View {
@State private var isAnimating = false
@State private var animationTime:Double = 0
var body: some View {
NavigationView{
Image("dog")
.rotationEffect(.degrees(isAnimating ? 720:0))
.animation(Animation.easeIn(duration:animationTime))
.onTapGesture {
animationTime = 2
isAnimating.toggle()
}
}
}
}
如果小伙伴们有其他方法,欢迎来私聊打扰博主奥。