2016-07-21 2 views
0

Swift 2.2を使用してiOS 8.0+をターゲットとするアプリを開発しています。デバイスの向きに応じて異なる数の列を表示するUICollectionViewがあります。 viewWillTransitionToSizeでは、私はindexPathsForVisibleItems()を使用し、最小のインデックスパスを見つけて最初の目に見えるアイテムを決定し、オリエンテーションの変更でそのアイテムにスクロールします。半透明のナビゲーションバーの下にあるものを含まないindexPathsForVisibleItems()を取得

これは、indexPathsForVisibleItems()に半透明のナビゲーションバーの下にあるアイテムが含まれているため、スクロールが数個のセルによってオフになる場合があることを除けば、これはうまくいきます。ナビゲーションバーの下に表示されていないセルを確認する方法はありますか?

+0

ナビゲーションバーの高さに注意し、UICollectionViewのCGPointでセルを取得します。次に、そのセルを上にスクロールすることができます。 – Putz1103

+0

@ Putz1103ああ、ありがとう、私は 'indexPathForItemAtPoint'を逃した。あなたは答えを書きたいですか? –

答えて

1

回転している特定のセルにスクロールする場合は、そのセルの物理的な位置を画面上に表示することができます(半透明のナビゲーションバーの高さとセルのy座標を取得します)。indexPathForItemAtPointを呼び出します。それはあなたに実際に見える(オーバーレイの下ではない)最初のセルを与えます。次に、回転時にそのセルにスクロールするようにUICollectionViewに伝えることができます。

関連する問題