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

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

最后,我找到了解决的办法,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,避免动画的重复加载!
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,262评论 25 709
  • 内容抽屉菜单ListViewWebViewSwitchButton按钮点赞按钮进度条TabLayout图标下拉刷新...
    皇小弟阅读 46,973评论 22 665
  • 在iOS中随处都可以看到绚丽的动画效果,实现这些动画的过程并不复杂,今天将带大家一窥ios动画全貌。在这里你可以看...
    每天刷两次牙阅读 12,712评论 6 30
  • 小时候的我极其恐高,不敢站在高处往下看,一旦站到比较高的位置,会离边缘远远的,迫不得己靠近边缘,我就会口干舌躁,两...
    三七木木阅读 5,598评论 0 0
  • 说到洋气,洋气一词听到的人都会认为它是一个褒奖词。现在很多年轻人都会互相说:"某某很洋气"。洋气的字面意思就是说一...
    张家的阅读 14,209评论 0 0