【问题标题】:Is it possible to update the UITableCell's height through cellForRowAtIndexPath?是否可以通过 cellForRowAtIndexPath 更新 UITableCell 的高度?
【发布时间】:2010-09-18 17:39:33
【问题描述】:

在处理UITableViewControllers时,除了这个方法之外,还有没有其他方法可以设置单个表格单元格的高度:

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

基本上我想要做的是将一段文本插入到一个具有可变高度的表格单元格中。文本长度可以在 100-1000 个字符之间。我想做的是使表格单元格的高度适合将插入其中的文本块。我不是在寻找一种缩小文本以适应固定高度的表格单元格行的方法(这似乎是我正在寻找的解决方案)。有没有办法通过下面的方法调用单元格的高度?

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath;

目前,我正在执行以下 sn-p 代码来查找文本的高度,但是我认为这不是正确/最好的方法。如果我得到了文本块的大小限制,那么我可以通过这个方法用适当的高度更新表格单元格似乎是合乎逻辑的:cellForRowAtIndexPath。我还读到下面返回的值以像素为单位,所以我需要将像素转换为其他数值,以便为我提供正确的行高度吗?

CGSize constraintSize;
constraintSize.width = 500.0f;
constraintSize.height = 500.0f;
CGSize theSize = [theText sizeWithFont:[UIFont systemFontOfSize:14.0f] constrainedToSize:constraintSize lineBreakMode:UILineBreakModeWordWrap];

更新: 所以这个链接似乎做了我想要的: Get tableView:heightForRowAtIndexPath: to happen after tableView:cellForRowAtIndexPath:?

但是,上面的链接似乎仍然剪辑了文本的最后几个字符/单词。这一切似乎都取决于文本块中使用的字符/单词的数量。我可能是错的。有什么想法吗?

【问题讨论】:

    标签: iphone objective-c


    【解决方案1】:

    最后一个字符被剪裁可能是由于约束尺寸过宽造成的。将其缩小几个像素,看看效果如何。您还可以在返回的高度上添加一个恒定的偏移量。所有 UILabel 都有一个小的边距,您引用的答案可能没有正确考虑。

    【讨论】:

      猜你喜欢
      • 2021-12-15
      • 1970-01-01
      • 1970-01-01
      • 2013-06-18
      • 1970-01-01
      • 2023-03-15
      • 2013-08-17
      • 1970-01-01
      • 2021-06-23
      相关资源
      最近更新 更多