我使用下面的代码将照片保存到照片库中
for(int i=0;i<[imageNameArray count];i++)
{
NSMutableString *sss=[[NSMutableString alloc] initWithString: myAppPath];
[sss appendString:@"/"] ;
[sss appendString: [NSString stringWithFormat:@"%@",[imageNameArray objectAtIndex:i] ] ] ;
UIImage *image = [[[UIImage alloc] initWithContentsOfFile:sss]autorelease];
UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil);
[sss release];
}
但有时,它无法正确保存图像,我发现在照片库中,有一个或多个黑色块在缩略图模式下替换保存的图像,但如果单击黑色块,原始图像可以正确显示。
有没有人遇到同样的问题?
欢迎任何评论
由于
InterDev中
答案 0 :(得分:1)
您可能会快速连续保存图像,因此保存调用会重叠。 (将图像写入磁盘所需的时间比从函数返回的图像要长。)
据我所知,保存图像功能是异步的,并允许注册委托/回叫(在你传递的地方为零)。
你应该等到一张图像完成写入,直到你开始另一张图像。
您可以使用委托和回调对此进行设计。为了让用户更好并让他们知道发生了什么,您可以显示进度条和其他信息,如“保存的1/3图像”等。
编辑:
为了更好的背景,我查阅了文档:
UIImageWriteToSavedPhotosAlbum
函数声明为:
void UIImageWriteToSavedPhotosAlbum (
UIImage *image,
id completionTarget,
SEL completionSelector,
void *contextInfo
);
您应该设置completionTarget
(可能是self
)和completionSelector
应该具有以下签名:
- (void) image: (UIImage *) image
didFinishSavingWithError: (NSError *) error
contextInfo: (void *) contextInfo;
在完成选择器中,您可以执行是否需要执行其他保存的逻辑,并更新“进度”用户界面。