2000x200の制限を忘れて、18000 x18000NASA画像を描画するオープンソースプロジェクトがあります。
このタスクを2つの部分に分割することをお勧めします。まず、スクロールします。CodaFiによって提案されたように、スクロールするとCATiledLayersが提供されます。それらのそれぞれは、あなたが作成するCGImageRefになります-あなたの本当に巨大なキャンバスのサブ画像です。その後、ズームインとズームアウトを簡単にサポートできます。
2番目の部分は、ユーザーと対話して、キャンバスを描画またはその他の方法で影響を与えることです。ユーザーがスクロールを停止したら、不透明なUIViewサブクラスを作成します。これをサブビューとしてメインビューに追加し、CATiledLayersをホストしているビューをオーバーレイします。このビューを表示する必要があるときに、適切な情報を入力して、大きなキャンバスのその部分を適切に描画できるようにします(たとえば、この時点での円やそのような色など)。
このオーバーレイビューのdrawRect:メソッドを使用して描画を行います。したがって、ユーザーがビューを変更するアクションを実行すると、必要に応じて「setDisplayInRect:」を実行して、iOSにdrawRect:を呼び出させます。
ユーザーがスクロールすることを決定したら、ユーザーが行った変更で大きなキャンバスモデルを更新してから、不透明なオーバーレイを削除し、CATiledLayersに大きな画像の適切な部分を描画させる必要があります。この移行は、視覚的な不具合を回避するためのプロセスの中でおそらく最も難しい部分です。
キャンバスに使用されるオブジェクト定義の配列が多数あるとします。タイルのCGImageRefを作成する必要がある場合は、タイルをスキャンしてオブジェクトのフレームとタイルのフレームの重なりを探し、そのタイルに必要なアイテムを描画します。