2011-07-26 5 views
4

私は(レンダリングされた)UITableViewCell *メソッドを持っています。私は、セル全体の幅/フレームを知りたいです。UITableViewCell全体の幅/フレームを取得する

cell.frameは動作していないようです - それは私にランダムなセルのフレームを与えます。私が得た最も近いものはcell.contentView.frameですが、accessoryViewhttp://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のような任意の場所にフレームを与えます。アクセサリビューは、私はすべてのケースでUITableViewCellのフレーム全体/幅を得ることができる方法UITableViewCellAccessoryNone

任意のアイデアである場合を除いて

cell.contentView.width + cell.accessoryView.width作品?

答えて

0

私は、デフォルトでは、セルがのUITableViewの幅の100%を使用しますので、のUITableViewの幅は、セルの幅と同等であり、あなたはおそらく使用して、表のセルの高さを設定していたためだと思う:

[UITableView setRowHeight:tableCellHeight]; 

ここで、tableCellHeightは選択した番号で、UITableViewはUITableViewクラスの名前ではなく、UITableViewの名前です。

次に、表のセルの幅と高さの両方があるか、質問を誤解しましたか?

12

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

それは、現在のセルの幅と高さが表示されます、これを試してみてください。

+0

はい、幅/高さが正確です。しかし、cell.offsetはすべてうんざりです - どんな考えですか? – psychotik

+0

これを試してください。オフセット。cell.frame.x、cell.frame.y – DShah

+0

これは 'cell.frame.origin.x'、' cell.frame.origin.y'です。 – Sisu

2

cell.frameは、常にメッセージングしているセルのフレームを表示します。

の場合でも、ランダムなセルが返されても、すべてのセルの幅が同じであるため、フレームの幅を使用することができます。

+0

さて、幅は使用できますがフレームは使用できません。現在のセルのフレームが返されない理由を知りませんか? yオフセットはオフです。 cell.contentView.frameは正しいと思われる(幅の問題を除いて) – psychotik

+0

'frame'メソッドは、メッセージされているオブジェクトのフレーム、この場合はセルを返す必要があります。別のオブジェクトのフレームを返す場合は、Appleにバグを報告する(または、フレームが実際に間違っていることを確認するためにコードを再確認する)必要があります。 –

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); 
+0

私の時間を保存しました。ありがとう –

関連する問題