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

Nim*_*man 6 iphone objective-c ios autolayout ios6

给定的问题

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

特定 通缉

目前的解决方案

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

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

垂直约束

我想要的是

我正在寻找隐藏导航栏并调整搜索框+表格以填充整个屏幕的最简单方法.

没有办法做到这一点,并利用iOS 6自动布局系统?

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

lar*_*cus 6

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

if(shouldHide){
  self.nibTitleBarConstraint.constant = 0.f;
}
else{
  self.nibTitleBarConstraint.constant = 44.f;
}
Run Code Online (Sandbox Code Playgroud)

如果您想要为更改设置动画,那么只需坚持-layoutIfNeeded动画上下文:

[UIView animateWithDuration:0.33f
                 animations:^{
                   [view layoutIfNeeded];
                 }];
Run Code Online (Sandbox Code Playgroud)

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