最近写了一个评论页面用到了UITableView+FDTemplateLayoutCell框架,先说下这个框架对于自动计算行高非常好用,项目里用到了一个组HeaderFooterView页需要自动计算高度,刚好框架了就有一个方法返回组视图的高度,十分开心的使用了
- (CGFloat)fd_heightForHeaderFooterViewWithIdentifier:(NSString *)identifier configuration:(void (^)(id headerFooterView))configuration;
但是发现约束过后竟然算不出高度,后来翻看源码发现,作者的回调BLock没有返回,导致数据没有进行刷新,所以计算的高度也不对。需要在源码里加入一行,搞定又可以开心的使用了
if (configuration) {
configuration(templateHeaderFooterView);
}
- (CGFloat)fd_heightForHeaderFooterViewWithIdentifier:(NSString *)identifier configuration:(void (^)(id))configuration {
UITableViewHeaderFooterView *templateHeaderFooterView = [self fd_templateHeaderFooterViewForReuseIdentifier:identifier];
>>>>mark--- 这里加一行代码,把视图返回出去,就可以正常计算了
if (configuration) {
configuration(templateHeaderFooterView);
}
NSLayoutConstraint *widthFenceConstraint = [NSLayoutConstraint constraintWithItem:templateHeaderFooterView attribute:NSLayoutAttributeWidth relatedBy:NSLayoutRelationEqual toItem:nil attribute:NSLayoutAttributeNotAnAttribute multiplier:1.0 constant:CGRectGetWidth(self.frame)];
[templateHeaderFooterView addConstraint:widthFenceConstraint];
CGFloat fittingHeight = [templateHeaderFooterView systemLayoutSizeFittingSize:UILayoutFittingCompressedSize].height;
[templateHeaderFooterView removeConstraint:widthFenceConstraint];
if (fittingHeight == 0) {
fittingHeight = [templateHeaderFooterView sizeThatFits:CGSizeMake(CGRectGetWidth(self.frame), 0)].height;
}
return fittingHeight;
}
网友评论