自定义UITableViewCell的最佳实践

时间:2018-03-29 02:47:00

标签: ios uitableview

enter image description here

创建这样的自定义单元格的最佳做法是什么?因为每个细胞的数据都会变化。如果数据中不存在电话号码,则价格标签和时间将高于地址,依此类推。如何计算细胞的大小?现在我使用此代码自动计算单元格的大小,但此代码仅使用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]];

}

1 个答案:

答案 0 :(得分:0)

您可以使用UITableViewAutomaticDimension 这基本上意味着您的tableview将根据其内容猜测您的单元格的高度。

这是doc: https://developer.apple.com/library/content/documentation/UserExperience/Conceptual/AutolayoutPG/WorkingwithSelf-SizingTableViewCells.html

一个很棒的教程:

https://www.raywenderlich.com/129059/self-sizing-table-view-cells

为了帮助您解决问题,您需要将标签中的文字设为零,以便根据您从api收到的数据,它的高度为0。另外,由于侧面有图标,您也需要隐藏它们。 确保从单元格的顶部到底部设置所有约束,以便tableview能够理解并猜测高度。 也不要忘记在viewdidload

中给出一个估计的行高
tableView.rowHeight = UITableViewAutomaticDimension
tableView.estimatedRowHeight = 80