ios - 观察层 'strokeEnd' 动画事件
<p><p>我想在动画开始时观察 strokeEnd 键路径。但它不起作用,我哪里出错了?</p>
<pre><code>- (void)addAnimation {
// do animation
CABasicAnimation *drawAnimation = ;
drawAnimation.duration = 3.f;
drawAnimation.repeatCount = 1.0;
drawAnimation.fromValue = ;
drawAnimation.toValue = ;
drawAnimation.timingFunction = ;
drawAnimation.fillMode = kCAFillModeForwards;
drawAnimation.removedOnCompletion = NO;
;
; // 监听position
}
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {
NSLog(@"change:%@",change);
// not called here...
}
</code></pre></p>
<br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
<p><p>当动画像这样“飞行”时,您无法观察到动画属性的变化。该属性实际上在动画开始时设置为结束值。然后有一个“表示层”放置在 View 的常规层之上,动画发生在该层上。</p>
<p>您能做的最好的事情是设置一个 <code>CADisplayLink</code> 计时器(一个与屏幕刷新率同步的轻量级计时器)并查询表示层上的属性因为它动画(<code>layer.presentationLayer.strokeEnd</code>,在你的情况下。)</p></p>
<p style="font-size: 20px;">关于ios - 观察层'strokeEnd' 动画事件,我们在Stack Overflow上找到一个类似的问题:
<a href="https://stackoverflow.com/questions/47824884/" rel="noreferrer noopener nofollow" style="color: red;">
https://stackoverflow.com/questions/47824884/
</a>
</p>
页:
[1]