6

给定的问题

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

给定 通缉

目前的解决方案

目前,我已经设法使用从搜索框到超级视图顶部属性的垂直空间约束来隐藏和调整所有内容 -

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

垂直约束

我想要的是

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

什么办法可以利用 iOS 6 自动布局系统?

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

4

2 回答 2

6

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

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

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

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

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

于 2012-10-30T19:52:32.433 回答
1

你能不能:

[[self navigationController] setNavigationBarHidden:YES animated:NO];
于 2012-10-29T15:23:10.387 回答