2

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

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

原因是我需要计算 NSAttributedString 的高度,boundingRectWithSize并将其限制为单元格的宽度。

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

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

那么我可以得到单元格的宽度吗heightForRowAtIndexPath

4

2 回答 2

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

于 2013-06-23T02:14:48.787 回答
2

有两种类型UITableView,分组和普通。

分组表视图的单元格小于表视图的宽度,这意味着您应该-cellForRowAtIndexPath:通过运行NSLogie在方法中找到宽度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

于 2013-06-22T23:50:21.020 回答