重复之前CAKeyframeAnimation延迟
我有一个CAKeyframeAnimation
animation,我想重复使用repeatCount = HUGE_VALF
永远。 animation的持续时间是2秒,但是我想在每个循环之前暂停3秒。
我能想到的唯一两种方法是:
-
使整个animation持续5秒钟,并添加额外的keyTimes和值,以便在5sanimation的最后3秒期间获得暂停。 这感觉有点哈克。
-
有animation只重复一次,然后添加使用像
performSelector:afterDelay:2
再次运行animation,等等。 这感觉也很脏。 也意味着我需要调用addAnimation:
每5秒钟,我不知道是最佳的性能。
我还有其他的select吗? 这两种方法之一是否比其他方法好?
通过倾倒苹果的MKUserLocationView
的animation,我能够看到他们是如何做的。 原来,这是CAAnimationGroup
的用途。 通过将一个2秒的animation封装到一个5秒的animation组中,最后会有一个2秒的animation,然后是3秒的延迟:
CAAnimationGroup *animationGroup = [CAAnimationGroup animation]; animationGroup.duration = 5; animationGroup.repeatCount = INFINITY; CAMediaTimingFunction *easeOut = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut]; CABasicAnimation *pulseAnimation = [CABasicAnimation animationWithKeyPath:@"transform.scale.xy"]; pulseAnimation.fromValue = @0.0; pulseAnimation.toValue = @1.0; pulseAnimation.duration = 2; pulseAnimation.timingFunction = easeOut; animationGroup.animations = @[pulseAnimation]; [ringImageView.layer addAnimation:animationGroup forKey:@"pulse"];
samvermette在Swift 3中的回答:
let animationGroup = CAAnimationGroup() animationGroup.duration = 5; animationGroup.repeatCount = .infinity let easeOut = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseOut) let pulseAnimation = CABasicAnimation(keyPath: "transform.scale.xy") pulseAnimation.fromValue = 0 pulseAnimation.toValue = 1.0 pulseAnimation.duration = 2 pulseAnimation.timingFunction = easeOut animationGroup.animations = [pulseAnimation] ringImageView.layer.add(animationGroup, forKey: "pulse")
- 如何animationUITableView标题视图
- <Error>:CGAffineTransformInvert:奇异matrix
- iOS的GoogleMaps SDK – animateToCameraPositionanimation完成处理程序?
- 如何模仿iOS 7上的键盘animation,将“完成”button添加到数字键盘?
- 停止使用RepeatsForever – Sprite Kit的SKAction
- 如何将居中的方形设置为顶部
- UIButtons在animation过程中没有响应 – iOS Swift 3
- UIImageViewanimation无法正常工作
- 在后台线程正在加载数据时挂起UIAlertview