使用masonry布局时,UITableViewCell自适应高度工具
HYBMasonryAutoCellHeight
github:https://github.com/CoderJackyHuang/HYBMasonryAutoCellHeight
有关讲解
Masonry自动计算行高:http://101.200.209.244/masonry-cell-height-auto-calculate/
有关使用
-
添加布局位置
UI布局必须放在UITableViewCell的初始化方法中 -initWithStyle:reuseIdentifier: 且必须指定hyb_lastViewInCell才能生效
UITableViewCell中设置Cell最底部控件, 如有需要还可以设置最底部控件距离cell底部的高度,如下:
/**
* 必传设置的属性,也就是在cell中的contentView内最后一个视图,用于计算行高
* 例如,创建了一个按钮button作为在cell中放到最后一个位置,则设置为:self.hyb_lastVieInCell = button;
* 即可。
* 默认为nil,如果在计算时,值为nil,会crash
*/
@property (nonatomic, strong) UIView *hyb_lastViewInCell;
/**
* 可选设置的属性,默认为0,表示指定的hyb_lastViewInCell到cell的bottom的距离
* 默认为0.0
*/
@property (nonatomic, assign) CGFloat hyb_bottomOffsetToCell;
- UITableViewDelegate中调用
/**
* 通过此方法来计算行高,需要在config中调用配置数据的API
*
* @param indexPath 必传,对应的indexPath
* @param confi 必须要实现,且需要调用配置数据的API
*
* @return 计算的行高
*/
+ (CGFloat)hyb_heightForIndexPath:(NSIndexPath *)indexPath config:(HYBCellBlock)config;
调用方式如下
- (CGFloat)tableView:(nonnull UITableView *)tableView heightForRowAtIndexPath:(nonnull NSIndexPath *)indexPath {
HYBNewsModel *model = nil;
if (indexPath.row < self.dataSource.count) {
model = [self.dataSource objectAtIndex:indexPath.row];
}
return [HYBNewsCell hyb_heightForIndexPath:indexPath config:^(UITableViewCell *sourceCell) {
HYBNewsCell *cell = (HYBNewsCell *)sourceCell;
// 配置数据
[cell configCellWithModel:model];
}];
}