- (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行.如果不添加该行代码,下边的代码会在第一次时产生一个"诡异"的效果.添加该行的意思就是:首先布局一下,以免没有完成的布局,影响下边的动画效果.
转载于:https://www.cnblogs.com/Sunnyheart/p/6229450.html
