iOS调整大小视图并启用自动布局

时间:2012-10-29 15:04:06

标签: iphone objective-c ios ios6 autolayout

给出的问题

我有以下视图,其中包括导航栏,搜索栏和表格视图 - 左侧图片是我拥有的给定视图,右侧是我想要实现的视图 - 基本上只需隐藏导航栏并调整所有内容。

given wanted

当前的解决方案

目前,我已设法使用从搜索框到superview top属性的垂直空间约束来隐藏和调整所有内容的大小 -

  • 默认约束常量为44(导航栏高度)
  • 点击搜索框后,我隐藏导航栏并将约束常量设置为0
  • 当我停止搜索时,我恢复导航栏并再次将约束设置为44

vertical-constraint

我想要什么

我正在寻找隐藏导航栏的最简单的方式,并调整搜索框+表的大小以填满整个屏幕。

是否有任何方式来实现它并利用iOS 6自动布局系统?

我目前的解决方案感觉不自然。

2 个答案:

答案 0 :(得分:6)

如果这是您需要更改的唯一约束,那么您可以在视图或视图控制器中为该一个约束创建一个IBOutlet,然后根据您需要更改的时间简单地修改约束:

if(shouldHide){
  self.nibTitleBarConstraint.constant = 0.f;
}
else{
  self.nibTitleBarConstraint.constant = 44.f;
}

如果您想要为更改设置动画,只需将-layoutIfNeeded粘贴到动画上下文中:

[UIView animateWithDuration:0.33f
                 animations:^{
                   [view layoutIfNeeded];
                 }];

这适用于您想要修改的任何约束常量(高度,顶部空间等),只要您的其他约束知道如何对该视图约束中的更改做出反应。

答案 1 :(得分:1)

你能说:

[[self navigationController] setNavigationBarHidden:YES animated:NO];