URLからいくつかの画像を取得し、それらをUIImageに変換してから、フォトライブラリに追加してから、カスタムアルバムに追加するアプリケーションを作成しています。カメラロールに入れずにカスタムアルバムに追加することは不可能だと思いますので、不可能だと思います(ただし、可能であれば理想的です)。
私の問題は、このサイトのコードを使用していて機能することですが、大きな写真を処理すると、「WriteBusy」として数枚返されます。関数を独自の完了コード内にコピーしてから、次のコード内にコピーして6まで続けると、すべてを正常に保存できます(最も多く見たのは、3〜4でしたが、サイズはわかりません。画像と私はいくつかの本当に大きなものを手に入れることができました)-これは、この段階でもエラーが発生し、それを繰り返すためのブロックがなかったため、カスタムアルバムにすべて含まれていないという問題につながりました。
エラーが表示される前にコードがすべて完了すると、実際の画像の保存がバックグラウンドスレッドに移動することを理解しています(ただし、これは特に設定していません)が、理想的には、単一のバックグラウンドに保存する画像をキューに入れる必要がありますスレッド化するため、同期的に発生しますが、UIをフリーズしません。
私のコードは次のようになります:
UIImage *image = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:singleImage]]];
[self.library saveImage:image toAlbum:@"Test Album" withCompletionBlock:^(NSError *error) {
if (error!=nil) {
NSLog(@"Error");
}
}];
コードの繰り返しを削除しました。そうしないと、コードサンプルが非常に長くなります。以前はNSLogコードが存在していた場所でした。
私のテストサンプルでは25枚の画像を扱っていますが、これは簡単に200枚程度で、非常に高解像度になる可能性があるため、複数の画像を見逃すことなく、これを何度も確実に実行できるものが必要です。
ありがとうロブ