首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用UIViewAnimation阻止removeAllAnimations

用UIViewAnimation阻止removeAllAnimations
EN

Stack Overflow用户
提问于 2014-11-19 01:28:10
回答 1查看 151关注 0票数 2

我有一个简单的UILabel,当你对它做长按压时,它开始旋转。我正在使用以下代码成功地实现这一目标:

代码语言:javascript
复制
-(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) {
        ;
    }
}

用户只需双击标签就可以在任何点停止这个动画.这是它的代码:

代码语言:javascript
复制
-(IBAction)doubleTapEffect:(UITapGestureRecognizer *)sender {
    [labelObject.layer removeAllAnimations];
    labelObject.transform = CGAffineTransformMakeRotation(DegreesToRadians(0));

}

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

所以模式是:

1)长新闻-动画开始

2)双击-动画停止

3)长新闻-什么都没发生

4)长新闻又一次-动画又开始了。

我该怎么解决这个问题?

EN

回答 1

Stack Overflow用户

发布于 2014-11-19 04:44:47

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

假设angle是180开始,你的动画从0到180然后180到180然后180大约180到180。然后角度是+ 180,将角度设为360,初始动画为360,它被解释为0,因此标签从0到0。

变化

代码语言:javascript
复制
angle = angle + 180;

代码语言:javascript
复制
angle = angle + 30;

你应该看到旋转发生了。

如果您想要这样做,这个链接可能会帮助您进行一个连续的旋转:

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27007376

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档