创建这样的自定义单元格的最佳做法是什么?因为每个细胞的数据都会变化。如果数据中不存在电话号码,则价格标签和时间将高于地址,依此类推。如何计算细胞的大小?现在我使用此代码自动计算单元格的大小,但此代码仅使用1个标签,地址标签中不包含其他标签。
来自自定义单元格的代码:
- (void)awakeFromNib {
[super awakeFromNib];
self.titleLabel.translatesAutoresizingMaskIntoConstraints = YES;
self.addressLabel.translatesAutoresizingMaskIntoConstraints = NO;
CGFloat screenWidth = CGRectGetWidth([UIScreen mainScreen].bounds);
int gapWidth = 50;
if (screenWidth == 414) {
gapWidth = 20;
}
// The cell width is half the screen width minus the gap between the cells
// The gap should be slightly larger than the minium space between cells set
for the flow layout to prevent layout and scrolling issues
CGFloat cellWidth = (screenWidth - gapWidth);
[self.addressLabel addConstraint:[NSLayoutConstraint constraintWithItem:self.addressLabel
attribute:NSLayoutAttributeWidth
relatedBy:NSLayoutRelationLessThanOrEqual
toItem:nil
attribute:NSLayoutAttributeNotAnAttribute
multiplier:1.0
constant:cellWidth]];
}
答案 0 :(得分:0)
您可以使用UITableViewAutomaticDimension
这基本上意味着您的tableview将根据其内容猜测您的单元格的高度。
一个很棒的教程:
https://www.raywenderlich.com/129059/self-sizing-table-view-cells
为了帮助您解决问题,您需要将标签中的文字设为零,以便根据您从api收到的数据,它的高度为0。另外,由于侧面有图标,您也需要隐藏它们。
确保从单元格的顶部到底部设置所有约束,以便tableview能够理解并猜测高度。
也不要忘记在viewdidload
:
tableView.rowHeight = UITableViewAutomaticDimension
tableView.estimatedRowHeight = 80