gpt4 book ai didi

ios - 使用 removeAllAnimations 停止 UIViewAnimation

转载 作者:行者123 更新时间:2023-12-01 16:37:21 26 4
gpt4 key购买 nike

我有一个简单的 UILabel,当你长按它时它会开始旋转。我使用以下代码成功实现了这一点:

-(IBAction)longPressEffect:(UILongPressGestureRecognizer *)sender {
if (sender.state == UIGestureRecognizerStateBegan) {

UIViewAnimationOptions animationOptions = UIViewAnimationCurveLinear | UIViewAnimationOptionRepeat;

[UIView animateWithDuration:0.4 delay:0.0 options:animationOptions animations:^ {
labelObject.transform = CGAffineTransformMakeRotation(DegreesToRadians(angle));
} completion:nil];

angle = angle + 180;
}
else if (sender.state == UIGestureRecognizerStateEnded) {
;
}
}

用户只需双击标签即可随时停止此动画。这是代码:
-(IBAction)doubleTapEffect:(UITapGestureRecognizer *)sender {
[labelObject.layer removeAllAnimations];
labelObject.transform = CGAffineTransformMakeRotation(DegreesToRadians(0));

}

问题是下次您长按标签时 - 它没有响应。旋转动画不会再次启动。你必须再点击一次才能让它再次运行。

所以模式是:
1) 长按 - 动画开始
2) 双击 - 动画停止
3)长按 - 没有任何 react
4) 再次长按 - 动画再次启动。

我该如何解决?

最佳答案

它是动画的——它只是看起来不像,因为你一直在向角度添加 180。

假设 angle从 180 开始,你从 0 到 180 然后从 180 到 180 再从 180 到 180 进行动画处理。然后角度是 +180,将角度置于 360,初始动画是 360,它被解释为 0,所以标签的动画从 0 到 0。

改变

angle = angle + 180;


angle = angle + 30;

你应该看到旋转发生了。

如果您正在尝试这样做,此链接可能会帮助您进行连续轮换:

How can I rotate a UIButton continuously and be able to stop it?

关于ios - 使用 removeAllAnimations 停止 UIViewAnimation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27007376/

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