在heightForRowAtIndexPath方法中获取单元格的宽度

时间:2013-06-22 22:47:32

标签: iphone ios uitableview

这可能是一个简单的问题,但我搜索了几个小时但却找不到答案。

有没有办法在UITableView的heightForRowAtIndexPath委托方法中获取单元格宽度?

原因是我需要使用boundingRectWithSize计算NSAttributedString的高度,并将其约束到单元格的宽度。

目前我正在cellForRowAtIndexPath方法中计算它,然后重新加载该行。

这会导致每行在计算高度后刷新,这不是一个非常好的用户体验。

我可以在heightForRowAtIndexPath

中获得单元格的宽度

2 个答案:

答案 0 :(得分:2)

UITableView,Grouped和Plain两种类型。

分组表格视图的单元格小于表格视图的宽度,这意味着您应该通过运行-cellForRowAtIndexPath:NSLog找到NSLog(@"%f", cell.contentView.frame.size.width);方法中的宽度。然后,您可以使用它来确定高度。

普通表格视图的单元格宽度与UITableView相同,因此,您可以使用表格视图的宽度,即self.tableView.frame.size.width

更多信息可以在这里找到:http://developer.apple.com/library/ios/#documentation/uikit/reference/UITableView_Class/Reference/Reference.html

答案 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,那么表格的宽度就可以了。但是如果你在单元格中做任何复杂的事情,子类化是一个好主意。

相关问题