1

我在UITableViewCell中有一个UITextView。我正在尝试根据内容大小设置UITextView的高度。在我的cellForRowAtIndexPath方法中,我有:

CustomCell *cell = (CustomCell *) [tableView dequeueReusableCellWithIdentifier:@"CustomCell"];
....
cell.text.text = textString; // cell.text is the UITextView
CGRect frame = cell.text.frame;
frame.size.height = cell.text.contentSize.height;
cell.text.frame = frame;

return cell;

自定义单元格上还有其他对象,但没有任何约束。有趣的是,第一次加载表格视图时,UITextView 不会调整大小。但是,当通过向下或向上滚动加载另一个单元格时,UITextView 会根据上面的代码调整到正确的高度。为什么初始表加载不正确。

UITextView 具有默认的宽度和高度大小。让我知道是否可以添加更多详细信息。我没有实现heightForRowAtIndexPath,但是我正在做的测试没有超过默认的单元格高度,所以无论如何这都不重要。

4

3 回答 3

0

您是否记录了 的值cell.text.contentSize.height?那时您没有得到正确的值,我认为您应该在以下UITableView回调中设置高度:

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
于 2013-10-17T22:30:33.770 回答
0

如果最终使它与此一起使用,请尝试

cell.text.attributedText = [[NSAttributedString alloc]initWithString:textString];
float textViewWidth      = cell.text.frame.size.width;
[cell layoutIfNeeded];
cell.text.contentSize    = [cell.text sizeThatFits:CGSizeMake(textViewWidth, FLT_MAX)];
[cell.text sizeToFit];
于 2013-12-08T04:30:23.967 回答
0

[cell.text layoutIfNeeded]调用前尝试添加cell.text.contentSize

在绘制之前,UITextField 将不知道 contentSize。调用layoutIfNeeded应该强制计算布局大小。

于 2013-10-18T11:44:48.913 回答