首先我們在storyboard的cell裡面的UILabel, 設定好上下左右貼邊的auto layout.
再來到 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
裡面
針對這個cell計算裡面label的高度, 然後再重新layout
再來到 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
裡面
針對這個cell計算裡面label的高度, 然後再重新layout
UITableviewCell * cell = [tableView dequeueReusableCellWithIdentifier:@"xxx" forIndexPath:indexPath];
dispatch_async(dispatch_get_main_queue(), ^{
CGRect bounds = cell.label.bounds;
CGSize maxSize = CGSizeMake(bounds.size.width, CGFLOAT_MAX);
CGSize newSize = [cell.labelAbout sizeThatFits:maxSize];
newSize.width = MAX(bounds.size.width, newSize.width);
bounds.size = newSize;
cell.label.bounds = bounds;
// ask tableview to fit the height
[self.tableView beginUpdates];
[self.tableView endUpdates];
[cell.contentView layoutIfNeeded];
});
return cell;
iOS8之後, 如 cell 為 autoLayout 直接設定tableview屬性更方便
回覆刪除tableView.rowHeight = UITableViewAutomaticDimension;
// 設定default
tableView.estimatedRowHeight = 70.0;
謝謝Jesse補充:)
刪除