菜鸟教程小白 发表于 2022-12-11 20:43:50

iOS UIView 动画 CATransform3DMakeRotation 混淆


                                            <p><p>我有一个 <code>UIView</code> 我正在尝试动画向下翻转,同时它的轴位于 View 的底部。例如:</p>

<p> <img src="/image/OjSAI.gif" alt="enter image description here"/> </p>

<p>为此,我尝试使用 UIView 动画:</p>

<pre><code>[UIView animateWithDuration:3 delay:0 options:UIViewAnimationCurveEaseOut animations:^{

   // Flip Down
   top3.layer.anchorPoint = CGPointMake(0.5, 1.0);
   top3.layer.transform = CATransform3DMakeRotation(M_PI, 1, 0, 0);

} completion:^(BOOL finished) {

   // Reset?
   //top3.transform = CGAffineTransformMakeScale(1, 1);

}];
</code></pre>

<p>现在它没有按我想要的方式工作,看起来 View 动画远离用户而不是朝向用户。它似乎没有提供 3D 效果,使其在向下旋转时看起来更接近用户,如我的图像所示。我很肯定这是因为我不了解如何使用 <code>CATransform3DMakeRotation</code>。</p>

<p><strong>问题:</strong></p>

<ul>
<li>如何使 View 在下降时看起来更靠近用户?比如像我的图片示例那样倾斜它?</li>
<li>当我设置我的 <code>anchorPoint</code> 时,它会向下移动我的 View ,我怎样才能防止这种情况并仍然设置我的 <code>anchorPoint</code>?</li>
<li><s>使用 <code>UIView</code> 动画,我可以使用缓动设置吗?</s> 在选项中使用 <code>UIViewAnimationCurveEaseOut</code>。</li>
<li>我可以使用重力设置吗?</li>
</ul></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><ul>
<li>您的问题并不完全清楚,但听起来您在动画过程中没有看到透视失真 -View 在旋转时保持矩形,对吧?要使 CALayer 以透视方式显示,它的 <code>transform</code> 需要设置 <code>m34</code> 元素,如 <a href="https://stackoverflow.com/questions/347721/how-do-i-apply-a-perspective-transform-to-a-uiview" rel="noreferrer noopener nofollow">here</a> 所述.</li>
<li>为了补偿 <code>anchorPoint</code> 移动 View 层,您需要更改 View 的原始位置。</li>
<li>是的。除了您正在使用的动画选项之外,还有几个动画选项,您可以像这样组合它们(例如): <code>UIViewAnimationOptionBeginFromCurrentState | UIViewAnimationOptionCurveEaseInOut | UIViewAnimationOptionAllowUserInteraction</code>.</li>
<li>Core Animation 并没有任何物理概念。根据您想要的效果,您可以通过将多个动画与特定的缓动设置链接在一起来实现它——例如,撞击固体表面的下落物体将在下降过程中使用“缓入”动画,然后是如果它随后反弹,则“缓和”。</li>
</ul></p>
                                   
                                                <p style="font-size: 20px;">关于iOS UIView 动画 CATransform3DMakeRotation 混淆,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/8494184/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/8494184/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: iOS UIView 动画 CATransform3DMakeRotation 混淆