MacTalk 2017-12-13
方法一:使用系统自动计算cell高度
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{ UITableViewCell *cell = [self tableView:tableView cellForRowAtIndexPath:indexPath]; return [cell.contentView systemLayoutSizeFittingSize: UILayoutFittingCompressedSize].height; }
方法二:使用第三方库下载地址:UITableView-FDTemplateLayoutCell
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { NSString *cellReuseId = [self getReuseIdWithIndexPath:indexPath]; //获取cell id CGFloat height = [tableView fd_heightForCellWithIdentifier:cellReuseId cacheByIndexPath:indexPath configuration:^(id cell) { [self configureCell:cell indexPath:indexPath]; //对cell进行赋值 }]; return height; }
tips:使用fd的时候需要注意,cell在竖直方向的约束必须要撑满举例说明:cell里面有一个label,进行约束设置.
错误示范:
[label mas_makeConstraints:^(MASConstraintMaker *make) { make.left.right.equalTo(self.contentView); make.centerY.equalTo(self.contentView); //竖直方向约束是不满的,虽然label会有一个本身的高度 }
正确做法:法一:
[label mas_makeConstraints:^(MASConstraintMaker *make) { make.left.right.equalTo(self.contentView); make.centerY.equalTo(self.contentView); make.top.bottom.equalTo(self.contentView); //约束撑满竖直方向 }
法二:
[label mas_makeConstraints:^(MASConstraintMaker *make) { make.edges.equalTo(self.contentView); }];