我试图将图像保存到相机胶卷。这实际上用于奇妙的工作,但我不得不努力工作其他的东西,现在我回到项目更新它的iOS 6和poof此功能不再在iOS6上工作。UIImageWriteToSavedPhotosAlbum和ALAssetsLibrary不保存图像,也没有错误
我已经尝试了两种方法,都是在没有NSError对象的情况下静静地失败。首先,UIImageWriteToSavedPhotosAlbum:
UIImageWriteToSavedPhotosAlbum(img, self, @selector(image:didFinishSavingWithError:contextInfo:), nil);
// Callback
-(void)image:(UIImage *)image didFinishSavingWithError:(NSError *)error contextInfo:(void *)contextInfo
{
// error == nil
}
...和ALAssetsLibrary方法:
ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];
[library writeImageToSavedPhotosAlbum:[img CGImage]
orientation:(ALAssetOrientation)[img imageOrientation]
completionBlock:^(NSURL *assetURL, NSError *error)
{
// assetURL == nil
// error == nil
}
此外,[ALAssetsLibrary authorizationStatus] == ALAuthorizationStatusAuthorized
计算结果为真
在模拟器,应用程序一直没有出现在设置>隐私>照片部分,但是在实际的iPad上,他们确实显示该应用有权访问照片。 (另外,只需添加:上面的第一种方法是我以前使用的 - 它在真实设备&模拟器都一样,没有问题)。
我也试着在主线程上运行这个命令,看看是否改变了任何东西 - 没有区别。我在之前的背景上运行它,它曾经很好地工作(在模拟器和设备上)。
任何人都可以点亮一下吗?
我保存为自定义assetsgroup当碰到这样的问题。除了它会间歇性地工作。我通过在延迟0.1之后执行选择器解决了问题,直到成功。它似乎总是在第二次尝试。我能想到的唯一导致这个问题的原因是由于某些锁定问题,操作系统阻止了您的写入尝试。我会问的另一件事是,你是否从后台线程运行?如果是这样,那是允许的吗?如果是后台,请尝试从主线程。 – Bergasms
是的,我试图在主线程上执行它,结果相同 – drhr
检查应用程序未被拒绝访问隐私设置中的照片。 - 是否调用了'ALAssetsLibraryWriteImageCompletionBlock'?在完成块中'assetURL'和'error'都是'nil'吗? –