获取整个UITableViewCell的宽度/帧

时间:2011-07-26 06:07:35

标签: iphone ios uitableview

我有一个方法,我有一个(渲染)UITableViewCell *。我想知道整个细胞的宽度/框架。

cell.frame似乎不起作用 - 它给了我一个随机单元格的框架。我得到的最接近的是cell.contentView.frame,但它不包括accessoryView所涵盖的区域(请参阅http://developer.apple.com/library/ios/#documentation/UserExperience/Conceptual/TableView_iPhone/TableViewCells/TableViewCells.html#//apple_ref/doc/uid/TP40007451-CH7)。 cell.contentView.superview.frame也不起作用 - 它在某个任意位置给我一个框架,就像cell.frame一样。

除了附件视图为cell.contentView.width

的情况外,

cell.accessoryView.width + UITableViewCellAccessoryNone有效

任何想法如何在所有情况下获得UITableViewCell的整个帧/宽度?

4 个答案:

答案 0 :(得分:12)

试试这个,

NSLog(@"Cell Width = %f",cell.frame.size.width);
NSLog(@"Cell Height = %f",cell.frame.size.height);

它将显示当前的单元格宽度和高度。

答案 1 :(得分:4)

此代码为您提供indexPath选择的特定单元格的框架:

 // Get the cell rect and adjust it to consider scroll offset
    CGRect cellRect = [tableView rectForRowAtIndexPath:indexPath];
    cellRect = CGRectMake(cellRect.origin.x - tableView.contentOffset.x, cellRect.origin.y - tableView.contentOffset.y, cellRect.size.width, cellRect.size.height);

答案 2 :(得分:2)

cell.frame将始终为您提供正在发送消息的单元格框架。

即使它 返回一个随机单元格,你仍然可以使用框架的宽度,因为所有单元格都有相同的宽度。

答案 3 :(得分:0)

我认为默认情况下,单元格将使用UITableView宽度的100%,因此UITableView的宽度相当于单元格的宽度,因为您可能使用以下方法设置表格单元格高度:

[UITableView setRowHeight:tableCellHeight];

其中tableCellHeight是您选择的数字,UITableView是UITableView的名称而不是UITableView类本身。

然后你会同时拥有表格单元格的宽度和高度,还是我误解了你的问题?