Apple の PhotoScroller サンプル コードからいくつかのコードを抽出して、CATiledLayer
. インターネットからタイルで読み込まれた 8000x7000px の画像があります。
これは、私のアプリの一種のマップ機能です。また、オーバーレイが異なる2つのほぼ同一の画像があります(運が悪いとオーバーレイのみを追加しようとしました)。
UISegmentedControl
3 つの選択肢を切り替える必要があり、imageView で選択した画像から画像を読み込む必要があります。そのため、ユーザーが画像の 1 つを拡大して別のオプションを選択すると、スケールと座標は同じままで、imageView は選択した画像を必要なタイル スポットに読み込みます。
私はこれを部分的に管理しました。[imageView removeFromSuperview];
または、実際にこれを管理しましたが、別のオプションを選択すると、関数が呼び出されたときに画面全体が黒くなります。数秒で黒くなった後 (インターネットの速度によって異なります)、正しいタイルが表示されます。
可能であれば、レイヤーを次のレイヤーに「フェード」させたいです。ご存知かもしれませんが、 を使用するCATiledLayer
場合、最初のレイヤーは低解像度の画像全体ですが、ズームインすると、必要なタイルが小さなタイルの次のレイヤーに「フェードイン」します。
私は基本的に「リロード」コマンドを与える必要があり(TilingView*)imageView
、最後の画像を「フェード」させたいと思っています。
をコメントアウトしようとしましたが[imageView removeFromSuperview];
、実際に私が望むものに近づきました。ズームインして別のオプションを選択すると、実際には新しい画像が古い画像の上にフェードアウトしましたが、ズームアウトすると、古い画像が明らかに背景 (新しい画像の後ろ) にくっついて何も反応しませんでした。後でそれを superView から削除する必要がありますが、新しい画像が imageView として置き換えられたため、アクセスできなくなりました。人々がここでコードを見たいと思うかもしれないことは知っていますが、どのコードを表示すればよいかまったくわかりません..そして、CATiledLayer
ドキュメントが非常に貧弱で、何が起こっているのかを理解するのに本当に苦労しています.