2009-03-26 6 views
16

私の目標は、UITableViewの境界に近づいているときや覆い隠すときに、UITableViewCellsをフェードイン/フェードさせることです。スクロール中にUITableViewCellの座標を決定する

私が試みてきたアプローチは、スクロールイベント中にUITableViewCellの座標を取得することです。問題は、すべてのセルが0,0にあるように見えることです。私は座標を親テーブルとビューに変換しようとしましたが、まだ0,0で出てきます。

一般的に、誰かが座標を取得する方法を知っている場合や、自分の位置に基づいてUITableViewCellsをフェードアウトさせるより良い方法を知っていれば、あなたのアドバイスをいただければ幸いです。お時間を

おかげで、 ジョエル

+0

私も同じ問題を抱えていましたが、UIであってもフレームの幅と高さはありましたが、結果はx、y、幅、高さで0、0、0、0でした。 – RainCast

答えて

60

最初のステップは、のtableView内のセルのCGRectを報告する

CGRect rectInTableView = [tableView rectForRowAtIndexPath:indexPath];

を使用することです。ただし、この値はtableViewがスクロールするにつれて変化しません。これは、表の最初の行(最初の表示行ではない)に対する相対位置です。画面上のセルの位置を取得するには、

CGRect rect = [tableView convertRect:rectInTableView toView:[tableView superview]];

だから次の行はそれをすべて

CGRect rect = [tableView convertRect:[tableView rectForRowAtIndexPath:indexPath] toView:[tableView superview]]; を行い使用して座標系をsuperviewsに変換する必要があります。

+0

Thxはまだチャームのように動作します! –

+0

UICollectionViewに相当するものは何ですか? –

+0

これは私にとっては役に立ちません。 – Zigglzworth

0

は、私はあなたがそのビューに対するフレームを見ているように、細胞はのUITableViewの「セルサイズの」サブビュー内に保持されている疑いがあります。

実際の回答はありませんが、私はUIScrollViewのデリゲートクラスUIScrollViewDelegateをチェックアウトすることをお勧めします。それは– scrollViewDidScroll:に応答し、手動でオフセットを調整することができます。 UIScrollViewはUITableViewのスーパークラスです。

UIViewの- (CGPoint)convertPoint:(CGPoint)point toView:(UIView *)viewメソッドを使用して、ポイント(原点など)を別のビューの座標に変換できます。

3

UIImageViewの上下に透明度の低い部分的に透明なグラデーションPNGを持つオーバーレイはどうしていいですか?

表のスクロールでセルを描画すると、大きなパフォーマンスが低下します。

2

あなたは、任意のセルの矩形を取得するために

- (CGRect)rectForRowAtIndexPath:(NSIndexPath *)indexPath; 

を呼び出すことができます。これはrect内の原点構造体の座標を含みます。