UIView .animate不工作vs .animateKeyframes

时间:2018-05-14 20:20:13

标签: ios swift animation uiview

我想弄清楚为什么UIView.animate无法正常工作。

我知道UIView.animateKeyframes我可以将多种类型的动画链接在一起,但在这种情况下,我只会从当前大小transform执行一个动画0.0

在此转换之前,微调器图像已使用CABasicAnimation旋转:

let spinAnimation = CABasicAnimation(keyPath: "transform.rotation.z")
            spinAnimation.toValue = .pi * 2.0 // 360º spin
            spinAnimation.duration = 1.4
            spinAnimation.repeatCount = Float.greatestFiniteMagnitude // Repeat forever in loops.
            spinAnimation.isCumulative = true
            spinAnimation.isRemovedOnCompletion = false

            self.spinnerImageView.layer.add(spinAnimation, forKey: self.spinnerAnimationKey)

UIView KeyFrame动画

 UIView.animateKeyframes(withDuration: Constants.AnimationDuration.standard, delay: 0.0, options: .calculationModeLinear, animations: {
        UIView.addKeyframe(withRelativeStartTime: 0.0, relativeDuration: 0.4, animations: {
            self.spinner.transform = CGAffineTransform(scaleX: 0.0, y: 0.0)
        })
    }) { (_) in
        super.endRefreshing()
    }

UIView动画

    UIView.animate(withDuration: 0.4, delay: 0.0, options: .curveLinear, animations: {
        self.spinner.transform = CGAffineTransform(scaleX: 0.0, y: 0.0)
    }) { (_) in
        super.endRefreshing()
    }

关键帧动画按预期工作,它将动画图像缩小到0.0,但标准动画只会导致图像消失。不应该以相同的方式行事,还是因为图像已经有一个CABasicAnimation层导致animate无法正常工作?我更愿意使用.animate,因为我只是在进行转换。

0 个答案:

没有答案