在视图控制器之间切换时图像旋转动画速度加快?
Image rotating animation speeds up while switching between view controllers?
我有一个应用程序,其中有一个 UIImageView
使用 UIView.animate
顺时针旋转,如下所示:
func startAnimation(targetView: UIView, duration: Double = 6)
{
UIView.animate(withDuration: duration, delay: 0.0, options: .curveLinear, animations: {
targetView.transform = targetView.transform.rotated(by: CGFloat(Double.pi))
})
{ finished in
self.startAnimation(targetView: targetView, duration: duration)
}
}
此函数仅在 viewDidApear()
中调用(主要原因是因为我还有 2 个 UIViewControllers
用户可以来回调用。
我还有一个在 viewWillDisappear()
中调用的 stopAnimation()
函数。主要目标是在向用户显示另一个视图控制器时停止动画。
func stopAnimation()
{
self.view.layer.removeAllAnimations()
self.view.layoutIfNeeded()
}
目标: 当用户停留在同一个视图控制器上时动画应该是无限的,但是当他们切换到另一个视图控制器时,动画应该停止并且当他们回到那个视图控制器时视图控制器动画应该以相同的恒定速度再次开始。
问题: 由于某种原因,每次在另一个视图控制器和具有该动画的视图控制器之间切换时,动画都在加速。我不确定是什么原因造成的。
编辑:请求的附加代码:
override func viewDidAppear(_ animated: Bool)
{
super.viewDidAppear(animated)
startAnimation(targetView: logo)
}
每次开始制作动画之前,您都需要重置变换。否则它很可能已经接近轮换的一半了。因此,花费更短的时间或更远的时间=更长的时间。还使用 .repeat 而不是递归。
func startAnimation(targetView: UIView, duration: Double = 6)
{
targetView.transform = targetView.transform.rotated(by: CGFloat(0.0))
UIView.animate(withDuration: duration, delay: 0.0, options: [.curveLinear, .repeat], animations: {
targetView.transform = targetView.transform.rotated(by: CGFloat(Double.pi))
})
}
我有一个应用程序,其中有一个 UIImageView
使用 UIView.animate
顺时针旋转,如下所示:
func startAnimation(targetView: UIView, duration: Double = 6)
{
UIView.animate(withDuration: duration, delay: 0.0, options: .curveLinear, animations: {
targetView.transform = targetView.transform.rotated(by: CGFloat(Double.pi))
})
{ finished in
self.startAnimation(targetView: targetView, duration: duration)
}
}
此函数仅在 viewDidApear()
中调用(主要原因是因为我还有 2 个 UIViewControllers
用户可以来回调用。
我还有一个在 viewWillDisappear()
中调用的 stopAnimation()
函数。主要目标是在向用户显示另一个视图控制器时停止动画。
func stopAnimation()
{
self.view.layer.removeAllAnimations()
self.view.layoutIfNeeded()
}
目标: 当用户停留在同一个视图控制器上时动画应该是无限的,但是当他们切换到另一个视图控制器时,动画应该停止并且当他们回到那个视图控制器时视图控制器动画应该以相同的恒定速度再次开始。
问题: 由于某种原因,每次在另一个视图控制器和具有该动画的视图控制器之间切换时,动画都在加速。我不确定是什么原因造成的。
编辑:请求的附加代码:
override func viewDidAppear(_ animated: Bool)
{
super.viewDidAppear(animated)
startAnimation(targetView: logo)
}
每次开始制作动画之前,您都需要重置变换。否则它很可能已经接近轮换的一半了。因此,花费更短的时间或更远的时间=更长的时间。还使用 .repeat 而不是递归。
func startAnimation(targetView: UIView, duration: Double = 6)
{
targetView.transform = targetView.transform.rotated(by: CGFloat(0.0))
UIView.animate(withDuration: duration, delay: 0.0, options: [.curveLinear, .repeat], animations: {
targetView.transform = targetView.transform.rotated(by: CGFloat(Double.pi))
})
}