gpt4 book ai didi

ios - 使用 CABasicAnimation 停止旋转图像

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:17:40 37 4
gpt4 key购买 nike

我有一个使用以下代码旋转的 UIImageView:

CABasicAnimation *rotation;
rotation = [CABasicAnimation animationWithKeyPath:@"transform.rotation"];
rotation.fromValue = [NSNumber numberWithFloat:0];
rotation.toValue = [NSNumber numberWithFloat:(2*M_PI)];
rotation.duration = 2.0;
rotation.repeatCount = HUGE_VALF;
[myView.layer addAnimation:rotation forKey:@"Spin"];

我可以通过运行来阻止它

[myView.layer removeAnimationForKey:@"Spin"];

但是,当动画停止时,图像会重置到它开始的位置。如果图像在中间转动,这看起来有点尴尬,所以我希望它准确地停在旋转中的位置。我假设这需要在停止动画之前获取当前旋转量,然后在停止动画后立即将其设置回该旋转量。不过我不知道该怎么做。

最佳答案

有几种方法可以做到这一点。一种方法是我影响图层速度属性,您可以在这篇文章的答案中找到一个示例:Is there a way to pause a CABasicAnimation? .但是这种方式更多的是一种暂停动画的手段。

既然你想停止它,我建议你继续调用 removeAnimationForKey: 就像你一样,并将它与一个 CATransform3D 耦合,以便在它停止动画之前匹配 View 的 presentationLayer 的转换。试一试:

CATransform3D myTransform = [(CALayer*)[myView.layer presentationLayer] transform];

[myView.layer removeAnimationForKey:@"Spin"];
[myView.layer setTransform:myTransform];

关于ios - 使用 CABasicAnimation 停止旋转图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18260563/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com