具有动态高度的iOS Tableview

时间:2015-05-06 09:54:26

标签: ios objective-c uitableview

我正在研究具有动态单元高度的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位置框架。是否有任何替代方案可以实现此目的?任何帮助都将受到高度赞赏。

感谢。

1 个答案:

答案 0 :(得分:0)

最初为所有单元格设置占位符高度。之后尝试重新加载精确高度的细胞。

编写一种能够计算特定单元格的近似高度的方法。并将一些参数传递给它。