Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 基于单元内对象的自定义单元高度_Ios_Uitableview_Height_Heightforrowatindexpath - Fatal编程技术网

Ios 基于单元内对象的自定义单元高度

Ios 基于单元内对象的自定义单元高度,ios,uitableview,height,heightforrowatindexpath,Ios,Uitableview,Height,Heightforrowatindexpath,我制作了一个自定义单元格,在其中放置了一个UITextView,我想根据UITextView的文本长度更改单元格的高度。我知道如何使用heightforrowatinexpath静态更改单元格高度,但我无法根据内容动态更改单元格高度 我在这个论坛和其他几个论坛上读了十几个话题,但我没有找到我想要的答案 有什么想法吗?在heightForRowAtIndexPath float height = [cell.textView.text sizeWithFont:cell.textView.fon

我制作了一个自定义单元格,在其中放置了一个
UITextView
,我想根据
UITextView
的文本长度更改单元格的高度。我知道如何使用
heightforrowatinexpath
静态更改单元格高度,但我无法根据内容动态更改单元格高度

我在这个论坛和其他几个论坛上读了十几个话题,但我没有找到我想要的答案


有什么想法吗?

在heightForRowAtIndexPath

 float height = [cell.textView.text sizeWithFont:cell.textView.font constrainedToSize:CGSizeMake(cell.textView.frame.size.width, 10000)].height;
 return height;

10000这是单元格的最大高度,实际上您可以在textViewDidChange方法中设置最大整数值,调用

[tableView beginUpdates];
[tableView endUpdates];
这将触发heightForRowAtIndexPath,以便在用户每次键入字母时重新计算所有单元格大小。然后在heightForRowAtIndexPath中,您可以计算单元格所需的大小

sizeWithFont方法将返回在UILabel中显示文本所需的大小,由于内容插入、行距等原因,它与UITextView的大小略有不同。我在过去使用过一种有点粗糙的解决方案。如果创建临时UITextView,请设置它的文本,并使用[UIView sizeThatFits:constraintSize]获取适合约束内所有内容的大小。(关于此方法的文档有点不清楚-请查看此答案以了解更多信息:)


为了提高效率,您可能应该存储/延迟加载临时textView,这样您就不会为每个单元格创建新的UITextView,而是使用同一个UITextView来计算不同文本的高度。

数据是否来自网络?此时此刻,您在heightForRowAtIndexPath中正在做什么?是否查看此链接。。我相信它可能会返回CGSize,但这是正确的方法
UITextView *temp = [UITextView alloc] initWithFrame:someArbitraryFrame];
temp.font = DISPLAY_FONT
temp.text = cell.textView.text;
//This gets the necessary size to fit the view's content within the specified constraints
CGSize correctSize = [self.temp sizeThatFits:CGSizeMake(CONSTRAINT_WIDTH, CONSTRAINT_HEIGHT)];
return correctSize.height