可能是重复的,但我无法找到关于SO的具体问题,所以在这里。绘制动态UITableView行高的最佳做法
我很好奇动态改变所有行的高度,通常是因为你不知道用于标签的NSString的长度。
我知道你必须使用此委托方法来改变行高:
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
的问题是之前小区创建此委托方法被调用(即cellForRowAtIndexPath
之前调用)。
所以,我想到的是在viewWillAppear
中创建一个模拟单元格,并将一个单元格高度添加到映射到表视图数据源的数组(这在我的情况下也是一个数组)。
viewWillAppear
实现这一个重要的方法来获得高度:
[NSString sizeWithFont: constrainedToSize: lineBreakMode:]
然后在heightForRowAtIndexPath
我可以返回单元格的高度,像这样:
//cellHeights is an ivar populated in viewWillAppear
return [[cellHeights objectAtIndex:indexPath.row] floatValue];
我在想,如果有一个更好的方式来动态改变行高?
我知道这会降低大量行(大于1000,我相信)的性能。但就我而言,我的排不会接近那个数字。所以性能影响可以忽略不计。
在此先感谢!
太糟糕了。我也希望得到更多的回应。感谢您的输入! –