我有一个简单的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)长新闻-什么都没发生
4)长新闻又一次-动画又开始了。
我该怎么解决这个问题?
发布于 2014-11-19 04:44:47
它是动画-它只是看起来不像是,因为你一直在增加180的角度。
假设angle是180开始,你的动画从0到180然后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?
https://stackoverflow.com/questions/27007376
复制相似问题