在Swift中每次动画迭代后延迟

时间:2015-03-19 17:06:45

标签: ios objective-c swift animation core-animation

我有一个核心动画,.repeatCount设置为Float.infinity。每次迭代动画后,即。每次重复之后,我想要延迟3秒。我怎样才能做到这一点?谢谢!

3 个答案:

答案 0 :(得分:4)

您可以使用以下function来执行您需要的操作。

func animateInfinitelyWithDelay(delay : NSTimeInterval,duration : NSTimeInterval) {

    UIView.animateWithDuration(duration, delay: delay, options: UIViewAnimationOptions.CurveEaseIn,
        animations: { () -> Void in

        // Your animation Code

    }) { (finished) -> Void in
        if finished {
            self.animateInfinitelyWithDelay(delay, duration: duration)
        }
    }

}

答案 1 :(得分:2)

您还可以使用UIView关键帧动画(animateKeyframesWithDuration),其中最后在动画中内置“死时间”,然后重复该动画。

答案 2 :(得分:2)

使用Core Animation达到此效果的一种方法是在原始动画对象上配置除重复计数之外的所有内容,然后将其包装在具有更长持续时间的动画组中,然后重复该动画组。

let originalAnimation = /* create and configure original animation ... */
originalAnimation.duration = shortDuration

let group = CAAnimationGroup()
group.animations = [originalAnimation]
group.duration = shortDuration + delayAtTheEnd
group.repeatCount = .infinity

theLayer.add(group, forKey: "repeating animation with delay between iterations")

请注意,根据原始动画的工作,您可能需要配置填充模式才能获得正确的外观。