菜鸟教程小白 发表于 2022-12-13 03:39:52

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(@&#34;change:%@&#34;,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 - 观察层&#39;strokeEnd&#39; 动画事件,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/47824884/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/47824884/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 观察层 &#39;strokeEnd&#39; 动画事件