Gle*_*Low 27 iphone macos core-animation objective-c calayer
我有一个CABasicAnimation动画的属性,CALayer例如bounds.origin.我希望能够观察到随着时间的推移而变化的属性,但还没有找到一种100%有效的方法.
我试图在使用国际志愿者组织(键值观察)presentationLayer的bounds.origin的keyPath.系统抱怨在释放观察者之前释放了对象,这使我认为表示层只是临时的.观察presentationLayer.bounds.origin为密钥路径不起作用.
我尝试在另一个图层上创建一个属性并为其设置动画,例如通过声明@property并@dynamic在该图层上创建它.但是,只有在访问表示层时(例如,在动画结束时)才会更改此新属性,但在动画运行时它似乎不会更新.
我needsDisplayForKey在#2中使用了属性,它在动画期间触发更新,但对于这些问题:
CALayer具有非零帧时才有效.由于该层可能是CAShapeLayer或子类,因此它可能具有零帧.setNeedsDisplay了该层,但由于我实际上并没有绘制该层只监视属性更改,我不想让它重绘.我试过安排一个NSTimer,并在定时器回调样本中presentationLayer.这也适用于这些问题:
有什么建议?所有这些都将在iPhoneOS 3.0/3.1上.
我想你已经列出了所有的可能性.事实上,我甚至都没有意识到#2和#3,而且我在Core Animation上写了这本书.;-)
KVO不适用于这些房产.如果是的话会很好,但我相信这样做的原因与它需要的开销有关.该值将非常频繁地更新,并且必须回调给任何观察者.
无论如何,我发现NSTimer是最可靠的方法,但现在我不确定你说的是什么.是什么让你认为计时器不同步?为什么难以让计时器仅在动画运行时触发?你不能只是在计时器回调中检查你想要的条件,如果不满足条件则不做任何事情吗?
最好的祝福.
| 归档时间: |
|
| 查看次数: |
4510 次 |
| 最近记录: |