ビュー階層の一部ではなく、ユーザーが[印刷]をクリックしたときにのみ作成されるいくつかのMKMapViewを印刷することに興味があります。
次のことが当てはまるようです。
- オフスクリーンMKMapViewsはまったくレンダリングされません。
- MKMapViewを印刷すると、現在の状態でレンダリングされた状態で印刷されます。
したがって、マップビューを印刷するには、それらをビュー階層に入れる必要があるようです。幸いなことに、実験から、画面上で多数のマップビューを前面に配置でき、それらは引き続きレンダリングされるようです。
私の主な質問は、彼らがレンダリングしたことをどうやって知るのですか?マップビューをビュー階層に配置した直後にprintコマンドを実行すると、以下に示すように、ビットが欠落した状態で部分的にレンダリングされて印刷されます。ロードが完了するまで待ってから、印刷ジョブを実行したいと思います。(印刷シートが画面に表示されているときにバックグラウンドでロードできる場合はさらに良いです。その後、ユーザーが[印刷]をクリックした後、マップのロードが完了するまで、プログレスバーをユーザーに表示します。)
(下:部分的にロードされたマップビューを印刷するとどうなるかを示す画像。)
私の2番目の質問は、複数のマップビューを印刷するためのより良い方法はありますか?すべてをビュー階層に入れるのは素晴らしいことではありません。使用できる最大サイズが制限され、サブビューを調整するための厄介なコードがたくさんあることを意味します。