// 布局
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];
});