好了,这是我的两难选择。我有一个很好的代码块,它已被弃用,但它计算出任何文本块高度的适当大小。 (以下作品但已弃用)

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{

if (indexPath.section == 0 && indexPath.row == 2) {

   CGSize size = [[item desc] sizeWithFont:[UIFont systemFontOfSize:17] constrainedToSize:CGSizeMake(290 - (10 * 2), 200000.0f)];

    CGFloat height = MAX(size.height, 44.0f);

    return height + (2 * 2);
}
return 44;
}


试图删除不推荐使用的代码,所以我被困在正确的方法上修复了几天,于是我想到了这一点。

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
if (indexPath.section == 0 && indexPath.row == 2) {

    NSStringDrawingContext *ctx = [NSStringDrawingContext new];
    NSAttributedString *aString = [[NSAttributedString alloc] initWithString:[item desc]];
    UITextView *calculationView = [[UITextView alloc] init];
    [calculationView setAttributedText:aString];
    CGRect textRect = [calculationView.text boundingRectWithSize:self.view.frame.size options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName:calculationView.font} context:ctx];

    CGFloat height = MAX(textRect.size.height, 44.0f);
    return height + (2 * 2);

}
return 44;
}


从代码级的角度来看,这当然是行不通的,但是它不能适当调整单元格的大小。我觉得这很容易得到任何帮助。

最佳答案

尝试这个:

CGRect textRect = [calculationView.text boundingRectWithSize:CGSizeMake(290 - (10 * 2), 200000.0f)
                        options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName:calculationView.font} context:ctx];


您没有像过时方法中那样提供所需的大小约束。这就是为什么您未获得所需输出的原因。

10-08 12:11