私は次の効果を達成しようとしています:
UICollectionView
は、フォト アルバムなどのオブジェクトの親タイプのセルのグリッドを表示します。これらのアイテムの 1 つをタップすると、その要素を画面の一番上までスクロールして、そこから Springboard のようなフォルダーを開きたいと思います。そのフォルダ エリア内に、詳細アイテム (つまり、そのアルバムの個々の写真) で構成される別のコレクションが表示されます。残りの「親」ビューをタップすると、フォルダーが再び閉じます。このスキーマを参照してください。
これまでに行ったことは、アルバムの通常のコレクション ビューです。1つを選択すると、選択したアイテムが一番上までスクロールされJWFolders
、その場所で空のフォルダーが開かれます。それが表示されたら、周囲をトリガーUINavigationController
して、詳細項目を含む 2 番目のビュー コントローラーをプッシュします。これは、あたかも同じビューであるかのようにユーザーに表示されるようにレイアウトされています。
このアプローチにはいくつかの問題があります。これをより適切に行う方法を知りたいです。
JWFolders はスクリーンショットを撮り、その 2 つの半分を上下にアニメーション化してオープニング効果を実現します。これは問題ありませんが、iPad3 ではかなり遅くなります。これは、多くのピクセルが移動し、iPad3 の GPU が十分に機能していないためです。
2 番目のビューは、1 番目のビューの上に一致するようにピクセル パーフェクトである必要があります。これは不意に壊れる可能性があります。
ビューコントローラーの遷移で可能なアニメーションについては制限があります。デフォルト
UINavigationController
の右からのプッシュは適切ではありません。それをオーバーライドしてクロス ディゾルブを実行しましたが、それでも理想とはほど遠いものです。
フレームワークが行うように設計されていることに対して多くの創造的なハッキングを必要としない、保守可能な方法でこの問題に取り組む方法についての指針を得たいと思います。ここでは明らかな何かが欠けている可能性があるため、例へのポインタまたは一般的なアドバイスをいただければ幸いです。
アップデート:
少しアプローチを変えました。ここでは、2 つのコレクション ビュー コントローラーが組み込まれたコンテナー ビュー コントローラーを使用します。1 つは「アルバム」用、もう 1 つは下部の「写真」部分用です。2 つの中間にa を使用するUIImageView
と、上向きの三角形を作成できます。これは、2 つのコレクションが完全に別々に処理されるため、メンテナンスが容易になるため、メンテナンスの観点からも優れています。
アプリは自動レイアウトを使用するため、制約を変更することで、2 つの埋め込みビューのそれぞれが占めるスペースの量を変更できます。これは、JWFolders を使用したスクリーンショット ベースのアプローチよりもはるかに高速であり、iPad3 でもうまく機能します。
これは、私がなりたい場所にほぼ到達します。残っているのは、オープニングアニメーションを正しくすることです. アルバム コレクションを同時にスクロールして、タップしたアイテムが一番上に移動し、アルバム セルを指す三角形で写真コレクションを展開したいと思います。
scrollToItemAtIndexPath:atScrollPosition:animated:
呼び出しが下のビューをドラッグして開くように、レイアウトの制約を介して下のビューをそのセルに何らかの方法で「接続」できますか?