菜鸟教程小白 发表于 2022-12-12 21:50:56

ios - CAKeyframeAnimation 对于 CGPathAddArc 的某些角度值停止


                                            <p><p>我正在尝试制作动画,
其中一个圆圈围绕 View 中心旋转。</p>

<p>我希望圆圈出现在点击手势的位置下方,因此我计算 View 中心与圆圈之间的距离和角度。</p>

<p>然后我在 <code>CGPathAddArc</code> 中为动画路径设置这些值。</p>

<p>这似乎工作得很好,但有时,在执行整个旋转后,圆圈会停止一会儿,然后重新启动。
玩了一圈,发现这一定和<code>CGPathAddArc</code>函数的起止角度有关,因为设置-M_PI到M_PI这样的标准值不会导致问题。</p>

<p>我的代码是:</p>

<pre><code>CAKeyframeAnimation *pathAnimation = ;
    pathAnimation.fillMode = kCAFillModeRemoved;
    pathAnimation.removedOnCompletion = YES;
    pathAnimation.duration = 4.0;
    pathAnimation.repeatCount = HUGE_VALF;

    CGMutablePathRef curvedPath = CGPathCreateMutable();



    //get the angle and dinstance of location in relation to center of view (mathematics)
    CGFloat angle = atan2f(location.y -self.view.center.y, location.x - self.view.center.x);
    CGFloat distance = hypotf(location.x - self.view.center.x, location.y - self.view.center.y);
    NSLog(@&#34;angle: %f&#34;, angle);
    CGPathAddArc(curvedPath, NULL, self.view.center.x, self.view.center.y, distance, angle, angle + 2 * M_PI, NO);

    //Now we have the path, we tell the animation we want to use this path - then we release the path
    pathAnimation.path = curvedPath;
    CGPathRelease(curvedPath);

    //Add the animation to the circleView - once you add the animation to the layer, the animation starts
    ;
    ;
</code></pre>

<p>location 保存触摸事件的坐标,圆对象是在此代码段之前创建的。任何帮助将不胜感激。</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>添加它会使动画均匀平滑:</p>

<pre><code>pathAnimation.calculationMode = kCAAnimationPaced;
</code></pre>

<p>刚刚测试过。</p>

<p>顺便说一句,计算不错。 </p>

<p>希望这会有所帮助。</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - CAKeyframeAnimation 对于 CGPathAddArc 的某些角度值停止,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/23330329/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/23330329/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - CAKeyframeAnimation 对于 CGPathAddArc 的某些角度值停止