要更改 UITableView 的单元格,您有 2 个选项:
选项 A(最佳) 是使用 Autosizing TableView Cells with Autolayout Constraints。
要使用选项 A,您需要确保您的单元格内容视图对内容视图中的所有 UI 元素都有明确的顶部和底部约束(请参见此处的图片)作为示例:
Title UILabel 与 superview (Cell ContentView) 有一个顶部空间,与 SubTitle 有一个垂直间距。
SubTitle 对超级视图(Cell ContentView)也有底部空间限制。
这允许单元格自动调整大小,因为我的 UI 元素对内容视图具有顶部和底部约束。
启用自动调整大小的最后一步是在您的 UITableView 中设置这两个属性:
self.tableView.estimatedRowHeight = 60.0;
self.tableView.rowHeight = UITableViewAutomaticDimension;
estimatedRowHeight 的值应该尽可能接近实际大小,这有助于加快计算速度。
选项 B 是将 - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath; 委托添加到您的 UIViewController。
您应该在此处手动提供单元格的高度。
如果您只使用具有 2 个固定高度的 2 个不同的单元格,您也可以使用选项 B 并在那里添加一个逻辑来检测单元格并返回高度...
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
if ([cell isKindOfClass:[MyCustomCellTypeAClass class]]) {
return 44;
}
else {
return 100;
}
}