iOS学习笔记iOS进阶指南

Masonry使用总结

2016-08-11  本文已影响105人  小码农_gjw

在使用第三方库Masonry的过程中,遇到过各种各样的坑,以下就把笔者使用过程中的问题总结如下:

 tableView.rowHeight = UITableViewAutomaticDimension;
 tableView.estimatedRowHeight = 40;

代码示例:

    self.showGreenView = YES;

    UIView *redView = [UIView new];
    redView.backgroundColor = [UIColor redColor];
    [self.view addSubview:redView];
    
    UIView *orangeView = [UIView new];
    orangeView.backgroundColor = [UIColor orangeColor];
    [redView addSubview:orangeView];
    self.orangeView = orangeView;
    
    UIView *greenView = [UIView new];
    greenView.backgroundColor = [UIColor greenColor];
    [redView addSubview:greenView];
    self.greenView = greenView;
    
    [redView mas_makeConstraints:^(MASConstraintMaker *make) {
        make.left.mas_equalTo(0);
        make.top.mas_equalTo(70);
    }];
    
    [self.orangeView mas_makeConstraints:^(MASConstraintMaker *make) {
        make.left.top.mas_equalTo(10);
        make.bottom.mas_equalTo(-10);
        make.height.mas_equalTo(200);
        make.width.mas_equalTo(100);
    }];
    
    [self.greenView mas_makeConstraints:^(MASConstraintMaker *make) {
        make.left.mas_equalTo(self.orangeView.right).offset(10);
        make.top.bottom.mas_equalTo(self.orangeView);
        make.width.mas_equalTo(100);
        make.right.mas_equalTo(-10);
    }];

redView的大小可以通过子控件orangeView来确定height,greenView来确定width

- (void)touchesEnded:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {
    self.showGreenView = !self.showGreenView;
    [self.view setNeedsUpdateConstraints];
    [self.view updateConstraintsIfNeeded];
    [UIView animateWithDuration:0.25 animations:^{
        [self.view layoutIfNeeded];
        self.greenView.alpha = self.showGreenView ? 1:0;
    }];
}
- (void)updateViewConstraints {
    [self.orangeView mas_updateConstraints:^(MASConstraintMaker *make) {
        if (self.showGreenView) {
            make.width.mas_equalTo(100);
        } else {
            make.width.mas_equalTo(300);
        }
    }];
    
    [self.greenView mas_updateConstraints:^(MASConstraintMaker *make) {
        if (self.showGreenView) {
            make.width.mas_equalTo(100);
        } else {
            make.width.mas_equalTo(0);
        }
    }];

    [super updateViewConstraints];
}

效果图如下:


上一篇 下一篇

猜你喜欢

热点阅读