use*_*952 3 core-animation ios swift
我正在使用Swift和Core Animation实现一个简单的活动指标.核心动画循环仅包含两个动画.当我直接将它们添加到图层时,它们可以完美地工作.当我将它们添加为CAAnimationGroup时,根本不会发生任何事情.我完全被这种行为搞糊涂了,我已经检查了有关CAAnimationGroup的stackoverflow的所有问题,网上的所有教程,并多次阅读官方文档.我无法弄清楚发生了什么.请帮忙.
动画:
let anim1 = CABasicAnimation(keyPath: "strokeEnd")
anim1.fromValue = 0
anim1.toValue = 1.0
anim1.duration = 2.0
anim1.beginTime = CACurrentMediaTime()
let anim2 = CABasicAnimation(keyPath:"strokeStart")
anim2.fromValue = 0
anim2.toValue = 1.0
anim2.duration = 2.0
anim2.beginTime = CACurrentMediaTime() + 2.0
Run Code Online (Sandbox Code Playgroud)
这按预期完美地运行:
shapeLayer.addAnimation(anim1, forKey:nil)
shapeLayer.addAnimation(anim2, forKey:nil)
Run Code Online (Sandbox Code Playgroud)
这对我的图层没有任何作用:
let group = CAAnimationGroup()
group.animations = [anim1, anim2]
group.duration = 4.0
shapeLayer.addAnimation(group, forKey: nil)
Run Code Online (Sandbox Code Playgroud)
我制作了一个简短的演示片段,用于Playground:https://gist.github.com/anonymous/6021295eab4e00b813ce.请亲自看看,帮我解决这个问题.(如果您不确定如何使用Playground进行原型制作动画:http://possiblemobile.com/2015/03/prototyping-uiview-animations-swift-playground/)
Dun*_*n C 10
@ MDB983的答案看起来会起作用,但不能解释原因.
将动画直接添加到图层时,它的开始时间取决于当前的媒体时间.
将动画添加到动画组时,它们的"本地时间"是动画组.动画组中的开始时间为0是组的开头,1.0的beginTime是整个动画组中的1秒等.当您向动画组添加动画时,将开始时间更改为从零开始,不是从CACurrentMediaTime().
| 归档时间: |
|
| 查看次数: |
887 次 |
| 最近记录: |