问题描述
运行这段代码后,动画效果失败
#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。