2016-06-11 8 views
5

私はそこに複数のセルがあるテーブルビューを持っています。スーパービューの座標空間ではなく、テーブルビューの座標空間で、セルのフレームを取得したいと思います。テーブルビューの座標空間でテーブルビューセルのフレームを取得するにはどうすればよいですか?

絵は、おそらくこれは、より良い

enter image description here

は赤い四角形を参照してください説明するだろうか?これがテーブルセルのフレームです。青い矩形はテーブルビューのフレームです。青い矩形に相対的な赤い四角形を取得したいと思います。

frameプロパティをUITableViewCellとしました。しかし、それは(0、0、320、44)を返すので動作しません。明らかに、セルが画面の上部にないので、Y値はゼロであってはなりません。

テーブルセルのスーパーは、テーブルビューではない、明らかにこのUITableViewWrapperViewであるため、ビュー階層によると、これは、意図した動作です:

enter image description here

テーブルビューは、このている間:

enter image description here

だから、私はテーブルビューのフレームを表しCGRectを得ることができる方法/プロパティがありますテーブルビューの座標空間にあるセル?

座標空間内のCGRectを別の空間に変換できる機能があると思います。しかし、私はその名前とその使い方を忘れていました。私はそれがこの状況で役に立つのかどうかわかりません。

答えて

12

let rectOfCell= tableView.rectForRowAtIndexPath(indexPath) 
let rectOfCellInSuperview = tableView.convertRect(rectOfCell, toView: tableView.superview) 
+0

'rectOfCellInTableView'何であるコードの下に使用してください?あなたは 'rectOfCell'を意味しましたか? – Sweeper

+0

これは私のためには機能しません。 'convertRect'メソッドはセクションヘッダーの高さを考慮していないようです。 rectは表のセルより少し上にあります。すなわち、いくらかの-yオフセットを有する。 – Sweeper

+0

次に、セクションのrectを取得して、セルのy +(heightOfCell)(indexPath.row)を追加して、セルyの位置を取得することができます。 –

関連する問題