我正在研究具有动态单元高度的Tableview。
由于我的要求,我必须展示40种不同的细胞。每个细胞都不同。
对于前。
一个单元格有2个标签,1个imageview 另一个只有2个imageview的单元格 另一个单元格有5个标签,1个textview,2个按钮,2个imageview
我的问题是我无法静态定义高度。每个单元格中的标签和textview都是基于运行时的文本。所以根据我需要调整高度的各个元素。所以我根据下面的编码计算了标签和textview的高度,
CGSize constrainedSize = CGSizeMake((IS_IPAD)?765:285 , 9999);
NSDictionary *dict=[array objectAtIndex:indexPath.row];
NSDictionary *attributesDictionary = [NSDictionary dictionaryWithObjectsAndKeys:
[UIFont fontWithName:@"Lucida Sans" size:(IS_IPAD)?18.0:12.0], NSFontAttributeName,
nil];
NSMutableAttributedString *string = [[NSMutableAttributedString alloc] initWithString:[dict valueForKey:@"response"]attributes:attributesDictionary];
CGRect requiredHeight = [string boundingRectWithSize:constrainedSize options:NSStringDrawingUsesLineFragmentOrigin context:nil];
return requiredHeight.size.height;
上面的代码工作正常。但是对于一个单元格来计算5-10个标签有点困难。因为我需要为每个单元格调用10次。所以它会导致tableview上的慢滚动。之后我需要更改每个标签/文本视图和imageview的y位置框架。是否有任何替代方案可以实现此目的?任何帮助都将受到高度赞赏。
感谢。
答案 0 :(得分:0)
最初为所有单元格设置占位符高度。之后尝试重新加载精确高度的细胞。
编写一种能够计算特定单元格的近似高度的方法。并将一些参数传递给它。