加载中...

如何停止UIView动画


 // 布局
 UIView *view = [UIView new];
  view.backgroundColor = [UIColor redColor];
  [self.view addSubview:view];
  [view mas_makeConstraints:^(MASConstraintMaker *make) {
      make.size.sizeOffset(CGSizeMake(40, 40));
      make.left.offset(0);
      make.bottom.equalTo(self.mas_bottomLayoutGuide);
  }];

// 执行动画
  [view mas_remakeConstraints:^(MASConstraintMaker *make) {
      make.size.sizeOffset(CGSizeMake(100, 100));
      make.right.offset(0);
      make.bottom.equalTo(self.mas_bottomLayoutGuide);
  }];
  [UIView animateWithDuration:10 animations:^{
      [self.view layoutIfNeeded];
  }];

可以看到动画是正常执行了,但是执行动画的过程中,如果想停止怎么做呢。我们知道UIView封装的是CALayer,CALayer也有相关的动画属性、方法。

- (void)removeAllAnimations;

尝试在动画过程中调用removeAllAnimations,可以发现动画确实停止了。

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, NSEC_PER_SEC * 4), dispatch_get_main_queue(), ^{
    [view.layer removeAllAnimations];
});

文章作者: km
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 km !