【问题标题】:ios - UITableViewCells not extending to fit the textios - UITableViewCells 未扩展以适合文本
【发布时间】:2023-03-09 03:09:01
【问题描述】:

我正在尝试使 UITableView 中的单元格适应其中文本的长度。如果文本太长,单元格会变高以适应它。

我正在尝试这样的事情:

cell.textLabel.numberOfLines = 0;
cell.textLabel.lineBreakMode = UILineBreakModeWordWrap;

cell.textLabel.text = [[name stringByAppendingString:@": "] 
                               stringByAppendingString:comment];

但是发生的情况是,单元格只是试图将文本放入相同的垂直空间,并没有变得更高。

有人知道我在这里做错了什么吗?

谢谢!

【问题讨论】:

    标签: ios ios5 uitableview


    【解决方案1】:

    您需要使用单元格高度委托。看这里:dynamic UITableViewCell height

    您需要做的是计算文本高度,然后将单元格的高度设置为该高度。
    具体这个方法:

    - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
        NSString *yourText = [someArray objectAtIndex:indexPath.row];
        CGSize constraint = CGSizeMake(320 /*cell width*/, CGFLOAT_MAX);
        CGSize size = [yourText sizeWithFont:[UIFont systemFontOfSize:FONT_SIZE] constrainedToSize:constraint lineBreakMode:UILineBreakModeWordWrap];
        CGFloat height = MIN(size.height, 44.0f);
    
        return height;
    }
    

    【讨论】:

    • 那篇文章的哪一部分?我看了看,没有看到任何可以做到的问题。还是您的意思是答案指向的教程?
    • 你会想看看答案:stackoverflow.com/a/8903694/1535038。问题是您需要通过传递文本和宽度来计算行高,然后在 heightForRowAtIndexPath: 中返回高度。
    • 谢谢 - 但是 CELL_CONTENT_WIDTH 和 CELL_CONTENT_MARGIN 是从哪里来的?有没有办法动态获取这些?
    • 这些只是单元格宽度的常量,您很可能可以将其替换为 320
    • 是的,我明白,但我希望它可以在 iPad 和 iPhone 上运行,所以有没有办法自动检测设备?还是在别处做过?
    猜你喜欢
    • 1970-01-01
    • 2019-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-23
    • 1970-01-01
    • 2017-09-20
    相关资源
    最近更新 更多