隐藏搜索栏视图后更新视图的顶部 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**
** **
***************
- 创建一个与搜索栏大小相同的视图,并将搜索栏放在里面。设置顶部约束等于父视图的顶部。
- 创建自定义视图并将其顶部约束设置为等于第一个视图底部。
- 向第一个视图添加高度约束,并创建其余的约束。
要隐藏搜索栏,以编程方式将第一个视图高度约束设置为 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];
}];
}
我有自定义的 UIView 和 UISearchBar,它们作为子视图放置在视图控制器视图上。
在某些情况下,我需要隐藏搜索栏视图,然后我想调整自定义视图的大小。因此,假设搜索栏的高度为 44 磅。如果它在顶部可见,那么我的自定义视图应该以 y = 44 开头。但是如果我将搜索栏设置为隐藏,那么我的自定义视图的 y 位置应该等于 0。
我使用故事板并设置了所有约束,我现在想更新连接到顶部布局指南的顶部 space 约束。默认情况下它等于 44 pt。但是当我隐藏我的搜索栏时,我想将 top space 设置为 0 并将自定义视图的高度增加 44 pt.
我想自定义视图的所有子视图都会自动更新。
这是视图在视图控制器 self.view 上的放置方式:
***************
**search bar***
***************
**custom view**
***************
隐藏搜索栏后它应该看起来像这样并完全覆盖超级视图:
***************
** **
**custom view**
** **
***************
- 创建一个与搜索栏大小相同的视图,并将搜索栏放在里面。设置顶部约束等于父视图的顶部。
- 创建自定义视图并将其顶部约束设置为等于第一个视图底部。
- 向第一个视图添加高度约束,并创建其余的约束。
要隐藏搜索栏,以编程方式将第一个视图高度约束设置为 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];
}];
}