Ios 核心动画-组中动画的单独计时
我有两个动画,我想链到组 它们看起来像这样:Ios 核心动画-组中动画的单独计时,ios,swift,uiview,core-animation,Ios,Swift,Uiview,Core Animation,我有两个动画,我想链到组 它们看起来像这样: func animate(circle: UIView) { var animations = [CABasicAnimation]() let opacityAnimation = CABasicAnimation(keyPath: "opacity") opacityAnimation.repeatCount = Float.infinity opacityAnimation.autoreverses = tr
func animate(circle: UIView) {
var animations = [CABasicAnimation]()
let opacityAnimation = CABasicAnimation(keyPath: "opacity")
opacityAnimation.repeatCount = Float.infinity
opacityAnimation.autoreverses = true
opacityAnimation.fromValue = 0.0
opacityAnimation.toValue = 0.40
animations.append(opacityAnimation)
let scaleAnimation = CABasicAnimation(keyPath: "transform.scale")
scaleAnimation.repeatCount = Float.infinity
scaleAnimation.autoreverses = true
scaleAnimation.fromValue = 0.8
scaleAnimation.toValue = 1
animations.append(scaleAnimation)
let group = CAAnimationGroup()
group.duration = 1.4
group.repeatCount = FLT_MAX
group.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseInEaseOut)
group.animations = animations
circle.layer.add(group, forKey: nil)
}
有没有一种方法可以将单独的持续时间设置为第一个动画,将单独的持续时间设置为第二个动画?例如,opacityAnimation
需要3秒,scaleAnimation
1秒
我如何才能做到这一点?尝试使用此代码,但我没有测试此代码
func animate(circle: UIView) {
CATransaction.begin()
CATransaction.setCompletionBlock({
let scaleAnimate:CABasicAnimation = CABasicAnimation(keyPath: "transform.scale")
scaleAnimate.fromValue = 1.0
scaleAnimate.toValue = 0.0
scaleAnimate.duration = 0.9
scaleAnimate.repeatCount = 1
scaleAnimate.removedOnCompletion = true
scaleAnimate.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseIn)
circle.layer.addAnimation(scaleAnimate, forKey: "scaleSmallAnimation")
})
let opacityAnimation = CABasicAnimation(keyPath: "opacity")
opacityAnimation.repeatCount = 1
opacityAnimation.autoreverses = true
opacityAnimation.fromValue = 1.0
opacityAnimation.toValue = 0.40
opacityAnimation.duration = 2.0
circle.layer.addAnimation(opacityAnimation, forKey: "opacity")
CATransaction.commit()
}
请检查此ans: