基本的には、一連のソース画像からタイル画像を自動的に作成し、それをユーザーのフォトアルバムに保存したいと考えています。たくさんの小さなUIImageを1つの大きなUIImageに描画することに成功していません。これを達成するための最良の方法は何ですか?現在、UIGraphicsBeginImageContext()や[UIImage drawAtPoint]などを使用しています。最終的には、512x512の黒い正方形だけになります。これをどのように行うべきですか?CGLayerなどを探していますが、選択肢はたくさんあるようですが、特に簡単に機能するものはありません。
私のコードを実際に入れましょう:
CGSize size = CGSizeMake(512, 512);
UIGraphicsBeginImageContext(size);
UIGraphicsPushContext(UIGraphicsGetCurrentContext());
for (int i = 0; i < 4; i++)
{
for (int j = 0; j < 4; j++)
{
UIImage *image = [self getImageAt:i:j];
[image drawAtPoint:CGPointMake(i*128,j*128)];
}
}
UIGraphicsPopContext();
UIImage *result = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
UIImageWriteToSavedPhotosAlbum(result, nil, nil, nil);
実際、上記は私のコードで正確に起こっていることではないことに注意する必要があります。実際に起こることは、UIGraphicsPushContextの前にすべての行を呼び出し、次にアニメーションタイマーで、描画をゆっくりとインクリメントしてコンテキストに描画することです。次に、すべてが完了した後、UIGraphicsPopContext以降のすべてを呼び出します。