菜鸟教程小白 发表于 2022-12-13 08:57:33

ios - 在自定义 UIView 中动画 UIBezierPath 不起作用


                                            <p><p>当用户触摸我的 View(touchesEnded) 时,我正在尝试在我的自定义 <code>UIView</code> 中为 <code>UIBezierPath</code> 设置动画(从一条路径到另一条路径)。</p>
<p>我的绘图代码:</p>
<pre><code>- (void)drawRect:(CGRect)rect {
    // Drawing code
    ;
    ;

    CGContextRef currentContext = UIGraphicsGetCurrentContext();
    CGContextAddPath(currentContext, _startPath.CGPath);
    CGContextDrawPath(currentContext, kCGPathStroke);

}

- (void) createStartPath
{
    _startPath = UIBezierPath.bezierPath;
    ;
    ;
    ;
    ;
    ;
    ;
    ;
   ;
    ;
    ;
    ;
    ;
    ;

    ;

    ;
}

- (void) createEndPath
{

   _endPath = UIBezierPath.bezierPath;
    ;
    ;
    ;
    ;
    ;
    ;
    ;
    ;
    ;
    ;
    ;
    ;
    ;

    ;

    //;
}
</code></pre>
<p>我从这里开始我的动画(希望将一条路径“变形”到另一条路径):</p>
<pre><code>- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
    ;

    CAShapeLayer * myLineShapeLayer = [ init];
   
    CABasicAnimation * pathAnimation = ;
    pathAnimation.fromValue = (__bridge id);
    pathAnimation.toValue = (__bridge id);
    pathAnimation.duration = 3.0f;
    ;
}
</code></pre>
<p>我看到 <code>startPath</code> 和我的 <code>touchesEnded</code> 被调用,但没有任何动画显示 <code>endPath</code>。</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>为了让您的动画正常工作,请将您的 <code>myLineShapeLayer</code> 添加为 View 的 <code>layer</code> 的子层:</p>

<p>例如,在 <code>viewDidLoad</code> 中:</p>

<pre><code>;
</code></pre>

<p>为了在动画结束后仍然能够在屏幕上看到 <code>endPath</code>,我们可以先将 <code>endPath</code> 分配给 <code>path<<code>CAShapeLayer</code> 的/code> 属性:</p>

<pre><code>myLineShapeLayer.path = ;
</code></pre>

<p>因此我们在没有 <code>toValue</code> 的情况下制作动画:</p>

<pre><code>CABasicAnimation * pathAnimation = ;
pathAnimation.fromValue = (__bridge id);
pathAnimation.duration = 3.0f;
;
</code></pre>

<p>动画的结束效果会在动画结束后保留​​在屏幕上。</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 在自定义 UIView 中动画 UIBezierPath 不起作用,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/31287821/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/31287821/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 在自定义 UIView 中动画 UIBezierPath 不起作用