Ios7 使用自动布局隐藏时,隐藏并显示UIView,底部视图填充空间
我有两种观点彼此重叠,就像这样。当我按下按钮时,我想隐藏灰色视图,让粉色视图向上移动到它的空间中。当我再次按下按钮时,我希望灰色视图重新出现,并将粉色视图移回其原始位置 我可以通过这样做来实现这一点Ios7 使用自动布局隐藏时,隐藏并显示UIView,底部视图填充空间,ios7,autolayout,Ios7,Autolayout,我有两种观点彼此重叠,就像这样。当我按下按钮时,我想隐藏灰色视图,让粉色视图向上移动到它的空间中。当我再次按下按钮时,我希望灰色视图重新出现,并将粉色视图移回其原始位置 我可以通过这样做来实现这一点 - (IBAction)toggle:(id)sender { if (self.top.hidden) { self.top.hidden = NO; self.top.layer.frame = CGRectMake(0, 0, 320, 50);
- (IBAction)toggle:(id)sender {
if (self.top.hidden) {
self.top.hidden = NO;
self.top.layer.frame = CGRectMake(0, 0, 320, 50);
self.bottom.layer.frame = CGRectMake(0, 50, 320, 50);
} else {
self.top.layer.frame = CGRectMake(0, 0, 0, 0);
self.bottom.layer.frame = CGRectMake(0, 0, 320, 50);
self.top.hidden = TRUE;
}
}
然而,据我所知,关于autolayout的一般智慧是不要在代码中以编程方式设置帧大小。所以我的问题是,如何使用autolayout实现相同的结果
基本上是这个问题的iPhone版本:找到了这个问题的答案: 简言之:
- (IBAction)toggle:(id)sender {
if (self.top.hidden) {
self.top.hidden = NO;
[UIView animateWithDuration:0
animations:^{
self.verticalSpace.constant += 50.0;
[self.view layoutIfNeeded];
}];
} else {
[UIView animateWithDuration:0
animations:^{
self.verticalSpace.constant -= 50.0;
[self.view layoutIfNeeded];
}];
self.top.hidden = TRUE;
}
}
其中,self.verticalSpace
是在底视图和顶视图之间设置的约束