隐藏搜索栏视图后更新视图的顶部 space 约束

Update top space constraint for view after hide search bar view

我有自定义的 UIView 和 UISearchBar,它们作为子视图放置在视图控制器视图上。

在某些情况下,我需要隐藏搜索栏视图,然后我想调整自定义视图的大小。因此,假设搜索栏的高度为 44 磅。如果它在顶部可见,那么我的自定义视图应该以 y = 44 开头。但是如果我将搜索栏设置为隐藏,那么我的自定义视图的 y 位置应该等于 0。

我使用故事板并设置了所有约束,我现在想更新连接到顶部布局指南的顶部 space 约束。默认情况下它等于 44 pt。但是当我隐藏我的搜索栏时,我想将 top space 设置为 0 并将自定义视图的高度增加 44 pt.

我想自定义视图的所有子视图都会自动更新。

这是视图在视图控制器 self.view 上的放置方式:

***************
**search bar***
***************
**custom view**
***************

隐藏搜索栏后它应该看起来像这样并完全覆盖超级视图:

***************
**           **
**custom view**
**           **
***************
  1. 创建一个与搜索栏大小相同的视图,并将搜索栏放在里面。设置顶部约束等于父视图的顶部。
  2. 创建自定义视图并将其顶部约束设置为等于第一个视图底部。
  3. 向第一个视图添加高度约束,并创建其余的约束。

要隐藏搜索栏,以编程方式将第一个视图高度约束设置为 0,这将使自定义视图顶部移动到父视图的顶部。这个也可以动起来。

如果你想隐藏搜索栏然后创建高度约束和顶部space约束的出口,如下所示。

@property (strong, nonatomic) IBOutlet NSLayoutConstraint *searchBarTopSpaceHeight;
@property (strong, nonatomic) IBOutlet NSLayoutConstraint *searchBarHeight;

并将这些值设置为 0,如

_searchBarTopSpaceHeight.constant = 0;

_searchBarHeight.constant = 0;

尝试使用该解决方案。

应该是这样的 http://i.stack.imgur.com/dvheh.png

蓝色视图应该对顶视图有约束,对紫色视图有底部约束。不要忘记为蓝色视图设置高度限制。

- (IBAction)test:(id)sender {
    [UIView animateWithDuration:0.5 animations:^{
        self.heightConstraint.constant = 0;
        [self.view layoutIfNeeded];
    }];
}