<><> ---- Aalok回答了这个问题,我只是在等他写出来,所以我可以选择那个作为正确的答案。在此之前,随着他在下面描述的更改,我不得不调用 - self.library = [[ALAssetsLibrary alloc] init]; - 每次尝试保存图像之前。作为预防措施,我也停止了AVSession的运行,直到保存,重启后(使用[session stopRunning];和[session startRunning]; -----<><>
<><> -----编辑2:你不需要停止并重新启动AV会话,彻底测试它并且它工作正常。 -----<><>
<><> -----编辑3:在我的设备上彻底测试后,它完美地工作,一旦完成审查过程并放在商店,代码就无法运行。两个相同的设备(2x iPhone 4)运行相同的操作系统,一个使用我的开发构建,一个关闭app sotre,ap商店版本仍然有bug。现在放弃这个-----<><>
我正在使用此链接中的类别尝试保存到自定义文件夹:
http://www.touch-code-magazine.com/ios5-saving-photos-in-custom-photo-album-category-for-download/
现在它在某些时候有效,但不是全部。在评论中,有人建议以下代码检测组属性是否为零:
if ([group valueForProperty:ALAssetsGroupPropertyURL] == nil)
{
NSLog(@”group properties are nil!”);
} else {
[group addAsset:asset];
}
我有,它确实检测属性是否为零。一切都很好。我正在努力的是在那时设置属性并保存图像。我猜这时我们可以手动设置albumName并保存图片,我已经尝试了,但错误仍然存在。
有什么想法吗?谢谢。
答案 0 :(得分:4)
我在同一个.h和.m文件中遇到了同样的问题,但在工作2到3天后找到一个解决方案,解决方案非常简单,我需要更改的是.m文件中的
-(void)saveImage:(UIImage*)image toAlbum:(NSString*)albumName withCompletionBlock:(SaveImageCompletion)completionBlock
并在
-(void)addAssetURL:(NSURL*)assetURL toAlbum:(NSString*)albumName withCompletionBlock:(SaveImageCompletion)completionBlock
方法我只是在调用内部方法
之前添加它//THE CHANGE dispatch_async(dispatch_get_main_queue(),^{ //
[self writeImageToSavedPhotosAlbum:image.CGImage orientation:(ALAssetOrientation)image.imageOrientation completionBlock:^(NSURL* assetURL, NSError* error)
{
//error handling
if (error!=nil)
{
completionBlock(error);
return;
}
//add the asset to the custom photo album
[self addAssetURL: assetURL toAlbum:albumName withCompletionBlock:completionBlock];
}];
//THE CHANGE }); //
与另一个相同
快乐编码:)
修改强>
在第二种方法中,我在每completionBlock(nil);
行
[[NSNotificationCenter defaultCenter] postNotificationName:kSaveSuccess object:nil];
我使用此通知确保图像也保存在相册中。直到那时我用一些短信显示UIActivityIndicator
并且在成功保存的图像之后显示一条弹出消息,表示图像保存在具有专辑名称的专辑中。虽然这次UI没有响应,即用户无法做任何事情,然后按设备的主页按钮:);)
快乐编码:)