CALayer Rotation动画在显示的ViewController上不起作用

时间:2018-07-20 06:31:18

标签: ios swift4 calayer ios-animations

我有两个视图控制器(即firstVC和secondVC)。我正在介绍firstVC而不是firstVC并尝试实现旋转动画,但是它不起作用,我尝试在主线程上运行动画有些延迟,但是它给出了奇怪的行为。以下是我用来旋转视图的代码。

extension UIView {

private static let kRotationAnimationKey = "rotationanimationkey"

func rotate(duration: Double = 1, delay: Int = 0) {
    if layer.animation(forKey: UIView.kRotationAnimationKey) == nil {
        let rotationAnimation = CABasicAnimation(keyPath: "transform.rotation")

        rotationAnimation.fromValue = 0.0
        rotationAnimation.toValue = Float.pi * 2.0
        rotationAnimation.duration = duration
        rotationAnimation.repeatCount = Float.infinity

        DispatchQueue.main.asyncAfter(deadline: .now() + .seconds(delay)) {
            self.layer.add(rotationAnimation, forKey: UIView.kRotationAnimationKey)
        }
    }
}

func stopRotating() {
    if layer.animation(forKey: UIView.kRotationAnimationKey) != nil {
        layer.removeAnimation(forKey: UIView.kRotationAnimationKey)
    }
}}

注意:按下'secondVC'动画即可正常工作。但是我想展示“ secondVC”。

在介绍视图控制器和旋转动画期间,我没有得到任何反应。

如果您找到任何解决方案,请告诉我。

1 个答案:

答案 0 :(得分:-1)

要使用自定义演示文稿转换,必须确认到UIViewControllerTransitioningDelegateUIKit总是调用animationController(forPresented:presenting:source:)来查看是否返回了UIViewControllerAnimatedTransitioning。如果返回nil,则使用默认动画。