这可能是一个简单的问题,但我搜索了几个小时但却找不到答案。
有没有办法在UITableView的heightForRowAtIndexPath
委托方法中获取单元格宽度?
原因是我需要使用boundingRectWithSize
计算NSAttributedString的高度,并将其约束到单元格的宽度。
目前我正在cellForRowAtIndexPath
方法中计算它,然后重新加载该行。
这会导致每行在计算高度后刷新,这不是一个非常好的用户体验。
我可以在heightForRowAtIndexPath
答案 0 :(得分:2)
有UITableView
,Grouped和Plain两种类型。
分组表格视图的单元格小于表格视图的宽度,这意味着您应该通过运行-cellForRowAtIndexPath:
即NSLog
找到NSLog(@"%f", cell.contentView.frame.size.width);
方法中的宽度。然后,您可以使用它来确定高度。
普通表格视图的单元格宽度与UITableView
相同,因此,您可以使用表格视图的宽度,即self.tableView.frame.size.width
。
答案 1 :(得分:2)
子类UITableViewCell
并覆盖layoutSubviews
@interface MyCell : UITableViewCell
@end
@implementation MyCell
-(void)layoutSubviews {
[super layoutSubviews];
// You can get the width here using self.bounds.size.width
}
@end
正如msgambel建议的那样,如果你使用的是UITableViewStylePlain
,那么表格的宽度就可以了。但是如果你在单元格中做任何复杂的事情,子类化是一个好主意。