代码控制layout布局的视图显示与否

两种方式实现这个功能:

一、废话不说,上代码

- (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

这两段代码展示了视图生命周期中各个方法的调用次序。

你可能感兴趣的:(代码控制layout布局的视图显示与否)