私は、CATiledLayer があなたが望むことをするとは思わない。ただし、他にもいくつかのオプションがあります。まず、タイルのフェードインを無効にして、次のようにしてすぐに表示することができます。
@interface NoFadeTiledLayer : CATiledLayer {
}
@end
@implementation NoFadeTiledLayer
+ (CFTimeInterval)fadeDuration {
return 0.0;
}
@end
@implementation MyViewWithTiledLayer
+ (Class)layerClass {
return [NoFadeTiledLayer class];
}
...
@end
2 番目に、隣接するタイルのプリフェッチとキャッシュを独自に実行できるため、CATileLayer が drawLayer:inContext を呼び出したときにすぐに使用できるようになります。scrollViewDidScroll: と scrollViewDidZoom: を実装して、隣接するタイルと levelOfDetail を判断します。次に、キャッシュ ルックアップを実行し、存在しないものをプリフェッチ/レンダリング キューに追加します。バックグラウンド スレッドがキューを処理し、その後のスクロールまたはズームによってキューがクリアされ、再構築される可能性があります。次に、最初に drawLayer:inContext でキャッシュをチェックし、必要な場合にのみフェッチ/レンダリングします。