Tha*_*nks 27 iphone cocoa-touch core-animation uikit ios
根据我的理解,beginTime可以用来表示"嘿,从正好在12:00开始".但是我怎么用CFTimeInterval类型告诉它?我认为这只是一种指定秒的"浮动"值.
或者还有什么与CAMediaTiming协议中指定的timeOffset属性的区别?
Ort*_*ntz 54
我在文档中遗漏的内容:beginTime在"核心动画绝对时间"中,因此您需要获取当前时间并指定您的偏移量:
// Start in 5 seconds
theAnimation.beginTime = CACurrentMediaTime()+5;
Run Code Online (Sandbox Code Playgroud)
Chr*_*ris 19
您首先需要转换为图层的时空,如下所示:
let currentLayerTime = myLayer.convertTime(CACurrentMediaTime(), from: nil)
Run Code Online (Sandbox Code Playgroud)
然后您可以设置beginTime图层现在时间的相对值.例如,要以2s开始制作动画:
myAnimation.beginTime = currentLayerTime + 2
Run Code Online (Sandbox Code Playgroud)
您还可能希望将to设置fillMode为.backwards,以便在添加动画之前设置最终属性值:
myAnimation.fillMode = .backwards
myLayer.someProperty = someFinalValue
myLayer.addAnimation(myAnimation, forKey: "myAnimationName")
Run Code Online (Sandbox Code Playgroud)
Lou*_*arg 13
不,这不是beginTime的作用.它从父动画中指定相对开始时间(默认情况下,组中的多个动画一次全部触发).
从文档:
指定接收器相对于其父对象的开始时间(如果适用).
timeOffset使它开始在offSet时的帧处开始动画,当它到达结尾时它会循环.换句话说,想象A,B,C,D,E是动画帧,如果将beginTime或timeOffset设置为等于正常情况下的帧C时的值,则会出现各种情况.
Normal |A->B->C->D->E
beginTime: | A->B->C->D->E
timeOffset: |C->D->E->A->B
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16268 次 |
| 最近记录: |