iOS个人修养iOS开发工具

批量保存图片到相册的丢失图片的解决方法

2015-11-23  本文已影响142人  CGPointZero

在循环语句中批量保存图片到相册时,会有部分图片丢失,代码一般是这样的:

<code>
for(UIImage *image in imageArray)
{
UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil);
}
</code>
由于iOS 往系统相册写照片的时候是单线程,一张存完才会存下一张,可能是因为要经过这几个过程:压缩图片、生成缩略图、SQLite保存数据,同时写入照片会有失败的情况。

解决方法是:

//保存小图至相册
<code>
-(void)saveSmallImages
{
self.index=0;
UIImage *image=self.imageArray[self.index];
UIImageWriteToSavedPhotosAlbum(image,self,@selector(image:didFinishSavingWithError:contextInfo:),nil);
}
</code>
//递归调用保存图片
<code>
-(void)image: (UIImage *) image
didFinishSavingWithError: (NSError *) error
contextInfo: (void *) contextInfo;
{
[self saveNext];
}
</code>
//保存下一张
<code>
-(void) saveNext

{

self.index++;

if (self.index<self.imageArray.count)

{
UIImage *image=self.listToSave[self.index];

UIImageWriteToSavedPhotosAlbum(image, self, @selector(image:didFinishSavingWithError:contextInfo:), nil);
}

}

</code>

需要注意的是:

在保存完成的时候,调用的方法必须是:

<pre><code>-(void)image: (UIImage *) image

didFinishSavingWithError: (NSError *) error

contextInfo: (void *) contextInfo;</code></pre>

不然就会导致崩溃。

上一篇下一篇

猜你喜欢

热点阅读