我正在寻找如何让细胞高度变得动态。幸运的是我找到了SQL Fiddle Demo github项目,根据内容使细胞高度变得动态。
在 heightForRowAtIndexPath 中访问代码单元格,但我在这里的代码中认为 cellForRowAtIndexPath 的相同代码用于 heightForRowAtIndexPath 。如果代码冗长,我是否需要重复代码?
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
CustomTableViewCell *cell = [self.tableView dequeueReusableCellWithIdentifier:@"CustomCell"];
cell.fontNameLabel.text = _fontArray[indexPath.row];
int quoteIndex = indexPath.row % [_quoteArray count];
cell.quoteLabel.text = _quoteArray[quoteIndex];
NSString *fontName = _fontArray[indexPath.row];
cell.quoteLabel.font = [UIFont fontWithName:fontName size:17];
return cell;
}
// NOTE: in iOS 8 you can use the automatic height calculations from AutoLayout,
// and you can avoid writing this height method. Just comment it out, and uncomment
// the line in viewDidLoad for
// _tableView.rowHeight = UITableViewAutomaticDimension;
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
// Calculate a height based on a cell
if(!self.customCell) {
self.customCell = [self.tableView dequeueReusableCellWithIdentifier:@"CustomCell"];
}
// Configure the cell
self.customCell.fontNameLabel.text = _fontArray[indexPath.row];
int quoteIndex = indexPath.row % [_quoteArray count];
self.customCell.quoteLabel.text = _quoteArray[quoteIndex];
NSString *fontName = _fontArray[indexPath.row];
self.customCell.quoteLabel.font = [UIFont fontWithName:fontName size:17];
// Layout the cell
[self.customCell layoutIfNeeded];
// Get the height for the cell
CGFloat height = [self.customCell.contentView systemLayoutSizeFittingSize:UILayoutFittingCompressedSize].height;
// Padding of 1 point (cell separator)
CGFloat separatorHeight = 1;
return height + separatorHeight;
}