美文网首页
iOS 避免动画未结束时重复加载动画

iOS 避免动画未结束时重复加载动画

作者: August24 | 来源:发表于2016-02-23 22:44 被阅读610次

    最近在做一个日历控件,再给日历控件加上动画(点击按钮能够展现日历,再次点击按钮能够消失日历)时,我遇到了一个问题,连续快速的点击按钮时,日历控件的位置会出人意料的跑偏。

    最后,我找到了解决的办法,demo的代码如下:

    @interface ViewController ()
    @property (weak, nonatomic) IBOutlet UIView *greenView;
    @end
    
    @implementation ViewController
    
    - (IBAction)btnClick:(id)sender {
        
        [UIView animateWithDuration:1.0 animations:^{
            
            if (self.greenView.layer.animationKeys) {
                return;
            }
            
            NSLog(@"%@", self.greenView.layer.animationKeys.lastObject);
            
            self.greenView.transform = CGAffineTransformRotate(self.greenView.transform, M_PI_2);
        }];        
    }
    
    • 我们通过 self.greenView.layer.animationKeys 能够拿到作用到当前控件layer上的动画keys (返回值为一数组),当其值不为空时说明此时控件还在执行着动画,此时return,避免动画的重复加载!

    相关文章

      网友评论

          本文标题:iOS 避免动画未结束时重复加载动画

          本文链接:https://www.haomeiwen.com/subject/kotikttx.html