objective-c - ios 使用约束布局后动画失败

浏览:62日期:2023-11-21

问题描述

运行这段代码后,动画效果失败

#import 'ViewController.h'#import 'Masonry.h'@interface ViewController ()@property (nonatomic,strong)UIView *a;@end@implementation ViewController- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. UIView *a = [[UIView alloc] init]; a.backgroundColor = [UIColor redColor]; [self.view addSubview:a]; self.a = a;[a mas_makeConstraints:^(MASConstraintMaker *make) {make.left.equalTo(self.view);make.right.equalTo(self.view);make.bottom.equalTo(self.view.mas_bottom);make.height.equalTo(@100); }]; UIButton *b = [[UIButton alloc] initWithFrame:CGRectMake(20, 20, 200 , 200)]; b.backgroundColor = [UIColor greenColor]; [self.view addSubview:b]; [b addTarget:self action:@selector(ad) forControlEvents:UIControlEventTouchUpInside];}-(void)ad{ [UIView animateWithDuration:2 delay:1 options:UIViewAnimationOptionCurveEaseIn animations:^{self.a.center = CGPointMake(self.a.center.x, self.a.center.y - 200); } completion:^(BOOL finished) {NSLog(@'11111 %@',self.a);[self.view addSubview:[[UIView alloc] init]]; NSLog(@'12222222 %@',self.a); }];}

点击按钮,动画效果会在最后恢复到最初始的位置,是否有人能够简单解答一下,为什么[self.view addSubview:[[UIView alloc] init]]; 会造成这个问题

问题解答

回答1:

当你用autolayout布局后,相应的view如果需要做动画,也要改变布局,而不是frame。

相关文章: