我在 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 ,但我正在进行的测试没有超出默认的单元格高度,所以无论如何这都无关紧要。
答案 0 :(得分:0)
您是否记录了cell.text.contentSize.height
的值?
那时你没有得到正确的值,我认为你应该在下面的UITableView
回调中设置高度:
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
答案 1 :(得分:0)
尝试在致电[cell.text layoutIfNeeded]
cell.text.contentSize
在绘制之前,UITextField将不知道contentSize。调用layoutIfNeeded
应强制计算布局大小。
答案 2 :(得分: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];