运行这段代码后,动画效果失败
#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]]; 会造成这个问题
当你用autolayout布局后,相应的view如果需要做动画,也要改变布局,而不是frame。