菜鸟教程小白 发表于 2022-12-13 11:07:14

iOS:如何沿正弦曲线为图像设置动画?


                                            <p><p>如标题所述,我想在 UIView 中使用 CG/CA 或什至 OpenGL(如有必要)为一些沿着正弦曲线从底部到顶部行进的气泡设置动画。</p>

<p>这是我的 CA 代码片段,它运行良好,但它是一条动画直线。如何构建正弦曲线行为?</p>

<pre><code>- (void)animateBubble:(UIImageView *)imgView {
    context:nil];
    ;
    ;
    imgView.frame = CGRectMake(imgView.frame.origin.x, 0, imgView.frame.size.width, imgView.frame.size.height);
    ;
}
</code></pre>

<p>我已经用 SpriteKit 实现了想要的结果(看看:<a href="http://youtu.be/Gnj3UAD3gQI" rel="noreferrer noopener nofollow">http://youtu.be/Gnj3UAD3gQI</a>)。气泡沿着正弦曲线从底部移动到顶部,其中幅度在随机范围内。此外,我使用陀螺仪传感器来额外影响路径。</p>

<p>这种行为是否可以通过 UIKit、CG、CA 以某种方式重现(如果绝对需要,也可以使用 OpenGL)?代码示例会很棒,但也非常感谢任何其他想法。</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>要沿路径设置动画,您首先需要定义该路径。如果您确实需要真正的正弦曲线,我们可以向您展示如何做到这一点,但使用两条二次贝塞尔曲线定义近似正弦曲线的方法可能最简单:</p>

<pre><code>CGFloat width = ...
CGFloat height = ...
CGPoint startPoint = ...

CGPoint point = startPoint;
CGPoint controlPoint = CGPointMake(point.x + width / 4.0, point.y - height / 4.0);
CGPoint nextPoint = CGPointMake(point.x + width / 2.0, point.y);

UIBezierPath *path = ;
;
;

point = nextPoint;
controlPoint = CGPointMake(point.x + width / 4.0, point.y + height / 4.0);
nextPoint = CGPointMake(point.x + width / 2.0, point.y);

;
</code></pre>

<p>这样渲染路径:</p>

<p> <img src="/image/5byjv.png" alt="enter image description here"/> </p>

<p>显然,将 <code>startPoint</code>、<code>width</code> 和 <code>height</code> 更改为您想要的任何值。如果您需要更多迭代,或者重复添加更多贝塞尔路径的过程。 </p>

<p>无论如何,已经定义了路径,而不是渲染路径本身,您可以创建一个 <code>CAKeyframeAnimation</code> 动画 <code>UIView</code> 的 <code>position</code>沿着那条路:</p>

<pre><code>CAKeyframeAnimation *animation = ;
animation.fillMode = kCAFillModeForwards;
animation.removedOnCompletion = NO;
animation.duration = 1.0;
animation.path = path.CGPath;
;
</code></pre></p>
                                   
                                                <p style="font-size: 20px;">关于iOS:如何沿正弦曲线为图像设置动画?,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/31137196/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/31137196/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: iOS:如何沿正弦曲线为图像设置动画?