我有自定义UIView和UISearchBar,它们作为视图控制器视图上的子视图放置。
在某些情况下,我需要隐藏搜索栏视图,然后我想调整自定义视图的大小。所以,让我们说搜索栏有44磅的高度。如果它在顶部可见,那么我的自定义视图应该以y = 44开头。但如果我将搜索栏设置为隐藏,那么我的自定义视图的y位置应该等于0.
我使用故事板并设置所有约束,我想立即更新连接到顶部布局指南的顶部空间约束。默认情况下它等于44磅。但是当我隐藏我的搜索栏时,我希望将顶部空间设置为0并将自定义视图的高度增加44磅。
我想自定义视图的所有子视图都会自动更新。
这是视图在视图控制器的self.view上的位置:
***************
**search bar***
***************
**custom view**
***************
隐藏搜索栏后,它应该如下所示,并完全覆盖superview:
***************
** **
**custom view**
** **
***************
答案 0 :(得分:4)
如果您想要隐藏搜索栏,请创建高度限制和顶部空间约束的出口,如下所示。
@property (strong, nonatomic) IBOutlet NSLayoutConstraint *searchBarTopSpaceHeight;
@property (strong, nonatomic) IBOutlet NSLayoutConstraint *searchBarHeight;
并将这些值设置为0,如
_searchBarTopSpaceHeight.constant = 0;
_searchBarHeight.constant = 0;
尝试使用该解决方案。
答案 1 :(得分:1)
要隐藏搜索栏,请以编程方式将第一个视图高度约束设置为0,这将使自定义视图顶部移动到超级视图的顶部。这也可以动画。
答案 2 :(得分:0)
应该是这样的 http://i.stack.imgur.com/dvheh.png
蓝色视图应该具有顶视图的约束和紫色视图的底部约束。不要忘记为蓝色视图制作高度约束。
- (IBAction)test:(id)sender {
[UIView animateWithDuration:0.5 animations:^{
self.heightConstraint.constant = 0;
[self.view layoutIfNeeded];
}];
}