// // ViewController.m // NSLayoutAnimationDemo // // Created by ebaotong on 15/7/22. // Copyright (c) 2015年 com.csst. All rights reserved. // #import "ViewController.h" #define kWeakSelf(weakSelf) __weak typeof(self)weakSelf = self #define WS(weakSelf) __weak __typeof(&*self)weakSelf = self @interface ViewController () @property (weak, nonatomic) IBOutlet NSLayoutConstraint *topConstraint; @property (weak, nonatomic) IBOutlet UIView *topView; @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } /**需要对顶部约束拖线条来实现改变view的顶部约束*/ - (IBAction)btnClick:(UIButton *)sender { kWeakSelf(weakSelf); [UIView animateWithDuration:0.8 delay:0 options:UIViewAnimationOptionCurveEaseInOut animations:^{ weakSelf.topConstraint.constant = [UIScreen mainScreen].bounds.size.height; /**必须要添加不然看起来无明显效果*/ [weakSelf.view layoutIfNeeded]; } completion:^(BOOL finished) { weakSelf.topConstraint.constant = 0.f; /**必须要添加不然看起来无明显效果*/ [weakSelf.view layoutIfNeeded]; }]; } /**不需要对顶部约束拖线条来实现改变view的顶部约束*/ - (IBAction)btnAction:(UIButton *)sender { kWeakSelf(weakSelf); [self.view.constraints enumerateObjectsUsingBlock:^(NSLayoutConstraint *constraint, NSUInteger idx, BOOL *stop) { if ((constraint.firstItem ==weakSelf.topView)&&(constraint.firstAttribute == NSLayoutAttributeTop)) { [UIView animateWithDuration:1 delay:0 options:UIViewAnimationOptionCurveEaseInOut animations:^{ constraint.constant = [UIScreen mainScreen].bounds.size.height; /**必须要添加不然看起来无明显效果*/ [ weakSelf.view layoutIfNeeded]; } completion:^(BOOL finished) { constraint.constant = 0; /**必须要添加不然看起来无明显效果*/ [ weakSelf.view layoutIfNeeded]; }]; } }]; } @end