使用masonry布局时,UITableViewCell自适应高度工具

使用masonry布局时,UITableViewCell自适应高度工具

HYBMasonryAutoCellHeight

github:https://github.com/CoderJackyHuang/HYBMasonryAutoCellHeight

有关讲解

Masonry自动计算行高:http://101.200.209.244/masonry-cell-height-auto-calculate/

有关使用

  1. 添加布局位置

    UI布局必须放在UITableViewCell的初始化方法中 -initWithStyle:reuseIdentifier: 且必须指定hyb_lastViewInCell才能生效

  2. 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;
  1. 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];
  }];
}

你可能感兴趣的:(使用masonry布局时,UITableViewCell自适应高度工具)