动画问题



我有一个CAShapeLayer,并试图对一些属性进行动画处理。 一开始我确实使用了CABasicAnimation,但由于它一遍又一遍地循环,我需要最正式的方式来做到这一点。

以下代码可以正确设置动画:

    private func animateDidBecomeStraight () {
            CATransaction.flush()
            CATransaction.begin()
            CATransaction.setAnimationDuration(0.2)
                self.myShape.fillColor = UIColor.Red.cgColor
                self.myShape.lineWidth = 1
                self.myShape.strokeColor = UIColorRed.cgColor
            CATransaction.commit()
    }
 private func animateDidBecomeUnStraight () {
        CATransaction.begin()
        CATransaction.setAnimationDuration(0.5)
            self.myShape.fillColor = UIColor(white: 1, alpha: 1).cgColor
            self.myShape.strokeColor = UIColor(red: 0, green: 0, blue: 0, alpha: 0.5).cgColor
            self.myShape.lineWidth = 0.1
        CATransaction.commit()
    }

海峡和不直是按顺序召唤的,从不重复。

问题

第一次,动画以适当的持续时间工作。 海峡第一次打电话,Unstraight第一次打电话。 之后,它们似乎失去了动画持续时间。 变化似乎是立竿见影的。

CATransaction不是如何做到这一点。创建两个 CABasicAnimation 对象,一个用于直线对象,一个用于非直线对象。将它们加入CAAnimationGroup。现在将 CAAnimationGroup 配置为重复。

最新更新