两种方式实现这个功能:
一、废话不说,上代码
- (void)setModifyScheme:(BOOL)modifyScheme {
_modifyScheme = modifyScheme;
[self.view layoutIfNeeded];
if (!modifyScheme) {
self.pinci.hidden = YES;
self.pinciHeight.constant = 0;
self.totalMount.hidden = YES;
self.totalmountHeight.constant = 0;
}else {
self.pinci.hidden = NO;
self.pinciHeight.constant = 44;
self.totalMount.hidden = NO;
self.totalmountHeight.constant = 40;
}
}
通过重写一个bool类型的属性,来控制界面某些控件显示或隐藏。
如果你界面中有其他控件的layout依赖你要隐藏的控件,此时你可以通过设置你要隐藏控件的hidden属性和height约束,如上述代码。这里需要注意的是,在此前你应该调用[self.view layoutIfNeeded]方法,告诉系统你要更改约束了。
二、
- (void)updateViewConstraints {
[super updateViewConstraints];
if (!self.modifyScheme) {
self.pinci.hidden = YES;
self.pinciHeight.constant = 0;
self.totalMount.hidden = YES;
self.totalmountHeight.constant = 0;
}else {
self.pinci.hidden = NO;
self.pinciHeight.constant = 44;
self.totalMount.hidden = NO;
self.totalmountHeight.constant = 40;
}
}
在这个方法中做一些更新视图布局的事情,苹果更推荐使用这个方法。
还有一个与之对应的方法,如下
- (void)viewDidLayoutSubviews {
[super viewDidLayoutSubviews];
}
这两个方法是相对于应的,在一个视图显示的过程中,
- (void)viewDidLoad
|
- (void)viewWillAppear:(BOOL)animated
|
- (void)updateViewConstraints
|
- (void)viewDidLayoutSubviews
|
- (void)viewDidLayoutSubviews
|
- (void)viewDidAppear:(BOOL)animated
|
- (void)updateViewConstraints
|
- (void)viewDidLayoutSubviews
在视图消失的过程中:
- (void)viewWillDisappear
|
- (void)updateViewConstraints
|
- (void)viewDidLayoutSubviews
|
- (void)viewDidDisappear
这两段代码展示了视图生命周期中各个方法的调用次序。