Autolayout自适应cell高度

//
//  ViewController.m
//  autoHeightCell
//
//  Created by Mac on 15/12/11.
//  Copyright © 2015年 BDYL. All rights reserved.
//

#import "ViewController.h"
#import "MyTableViewCell.h"

@interface ViewController ()<UITableViewDataSource, UITableViewDelegate>

@property (nonatomic, strong) NSArray *dataSource;
@property (nonatomic, strong) UITableView *tableView;

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    [self setupTableView];
}

- (void)setupTableView
{
    if (!self.tableView.superview) {
        [self.view addSubview:self.tableView];
    }
    [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) {
        make.edges.equalTo(self.view);
    }];
    [self.tableView registerClass:[MyTableViewCell class] forCellReuseIdentifier:@"mytableViewID"];
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return self.dataSource.count;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    MyTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"mytableViewID" forIndexPath:indexPath];
    cell.contentText.text = self.dataSource[indexPath.row];
    return cell;
}

- (UITableView *)tableView
{
    if (!_tableView) {
        self.tableView = [[UITableView alloc] init];
        self.tableView.delegate = self;
        self.tableView.dataSource = self;
        // 下面俩句一定要写
        self.tableView.estimatedRowHeight = 44.0f;
        self.tableView.rowHeight = UITableViewAutomaticDimension;

    }
    return _tableView;
}

- (NSArray *)dataSource
{
    if (!_dataSource) {
        NSString *path = [[NSBundle mainBundle] pathForResource:@"test" ofType:@".json"];
        NSData *data = [NSData dataWithContentsOfFile:path];
        self.dataSource = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];
    }
    return _dataSource;
}

@end

这俩句一定要写

        self.tableView.estimatedRowHeight = 44.0f;
        self.tableView.rowHeight = UITableViewAutomaticDimension;

自定义cell

//
//  MyTableViewCell.m
//  autoHeightCell
//
//  Created by Mac on 15/12/11.
//  Copyright © 2015年 BDYL. All rights reserved.
//

#import "MyTableViewCell.h"

#define space 20

@implementation MyTableViewCell

- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
    if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) {
        [self setupSubViews];
    }
    return self;
}

- (void)setupSubViews
{
    if (!self.iconView.superview) {
        [self.contentView addSubview:self.iconView];
    }
    [self.iconView mas_makeConstraints:^(MASConstraintMaker *make) {
        make.top.equalTo(self.contentView).offset(space);
        make.left.equalTo(self.contentView).offset(space);
        make.width.equalTo(@80);
        make.height.equalTo(self.iconView.mas_width);
        make.bottom.lessThanOrEqualTo(self.contentView.mas_bottom).offset(0).offset(-space);
    }];
    
    if (!self.contentText.superview) {
        [self.contentView addSubview:self.contentText];
    }
    [self.contentText mas_makeConstraints:^(MASConstraintMaker *make) {
        make.left.equalTo(self.iconView.mas_right).offset(space);
        make.top.equalTo(self.contentView).offset(space);
        make.right.equalTo(self.contentView).offset(-space);
    }];
    
    if (!self.decriptionView.superview) {
        [self.contentView addSubview:self.decriptionView];
    }
    [self.decriptionView mas_makeConstraints:^(MASConstraintMaker *make) {
        make.left.equalTo(self.contentText);
        make.right.equalTo(self.contentText);
        make.height.equalTo(@80);
        make.top.equalTo(self.contentText.mas_bottom).offset(space);
        make.bottom.equalTo(self.contentView).with.offset(-space);
    }];
}

#pragma mark - lazyLoad
- (UIView *)iconView
{
    if (!_iconView) {
        self.iconView = [[UIView alloc] init];
        self.iconView.backgroundColor = [UIColor redColor];
    }
    return _iconView;
}

- (UILabel *)contentText
{
    if (!_contentText) {
        self.contentText = [[UILabel alloc] init];
        self.contentText.numberOfLines = 0;
        self.contentText.backgroundColor = [UIColor greenColor];
        self.contentText.textColor = [UIColor blackColor];
    }
    return _contentText;
}

- (UIView *)decriptionView
{
    if (!_decriptionView) {
        self.decriptionView = [[UIView alloc] init];
        self.decriptionView.backgroundColor = [UIColor blackColor];
    }
    return _decriptionView;
}

@end

希望对大家有帮助



你可能感兴趣的:(Autolayout自适应cell高度)