NSLayoutConstraint的动画

- (void)_show:(BOOL)show
{
    [self.superview layoutIfNeeded];
    CGFloat selfTop_SuperBottom = show ? -self.frame.size.height : 0;
    for (NSLayoutConstraint *constraint in self.superview.constraints)
    {
        if (constraint.firstItem == self && constraint.firstAttribute == NSLayoutAttributeTop
            && constraint.secondItem == self.superview && constraint.secondAttribute == NSLayoutAttributeBottom)
        {
            constraint.constant = selfTop_SuperBottom;
            break;
        }
    }
   
    [UIView animateWithDuration:0.50 animations:^{
        [self.superview layoutIfNeeded];
    } completion:^(BOOL finished) {
       
    }];
}

1.如果你使用的是AutoLayout来进行布局,并且又要使用UIView的动画的话,上面截图的代码可以帮助你解决这个问题.

2.特别提醒:注意代码的3行.如果不添加该行代码,下边的代码会在第一次时产生一个"诡异"的效果.添加该行的意思就是:首先布局一下,以免没有完成的布局,影响下边的动画效果.

 

posted @ 2016-12-28 14:49  Sunny孙宁  阅读(236)  评论(0编辑  收藏  举报