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