我在使用beta iOS 11的新设备上测试我们的应用程序,发现了一个有趣的错误。 我们正在使用UIActivityViewController(某些系统共享视图控制器)创建可以保存到用户库的图像:
NSMutableArray *sharingItems = [NSMutableArray new];
UIImage *screenShot = [self shareViewScreenShot];
NSString *filename = @"notImportant";
NSString *path = [NSString stringWithFormat:@"%@%@.jpg", NSTemporaryDirectory(), filename];
[UIImageJPEGRepresentation(screenShot, 1.0) writeToFile:path atomically:YES];
NSURL *pathUrl = [NSURL fileURLWithPath:path];
[sharingItems addObject:pathUrl];
UIActivityViewController *activityController = [[UIActivityViewController alloc] initWithActivityItems:sharingItems applicationActivities:nil];
[self presentViewController:activityController animated:YES completion:nil];
此工作正常,显示共享对话框,直到用户按“保存图像”。然后我得到了关于不支持这种图像格式的错误
2017-07-19 10:51:54.292881 + 0200 appName [6632:766119]视频 /private/var/mobile/Containers/Data/Application/29B8C33B-9247-45FE-B51F-A35A035019A9/tmp/notImportant.jpg 无法保存到已保存的相册:错误 Domain = AVFoundationErrorDomain Code = -11828“Niemożnaotworzyć” UserInfo = {NSUnderlyingError = 0x1c08558d0 {错误 Domain = NSOSStatusErrorDomain Code = -12847“(null)”}, NSLocalizedFailureReason =十格式multimediówniejestobsługiwany。, NSURL =文件:///private/var/mobile/Containers/Data/Application/29B8C33B-9247-45FE-B51F-A35A035019A9/tmp/notImportant.jpg, NSLocalizedDescription =Niemożnaotworzyć}
当我使用png / UIImagePNGRepresentation时会发生同样的情况。 所以问题是:
iOS 11支持png / jpg吗?
对于os版本> gt = 11的设备,我应该使用/和HEIF(新的苹果图片格式)吗?
答案 0 :(得分:0)
NSOSStatusErrorDomain代码表示属性数据大小不正确。
OSStatus是OS X和iOS中常用于错误代码的类型。如果代码的大小小于1百万,则代码可能在CarbonCore框架中的MacErrors.h中列出。否则,它可能是与返回它的函数在同一标题中列出的四字符代码。您可以通过在Xcode中单击它来找到函数的标题。代码很可能列在顶部附近,组合在一起。要将数字转换为代码,请使用Developer视图中的Calculator应用程序将其转换为十六进制,并将每个字节转换为字符。
答案 1 :(得分:0)
iOS 将图像视为视频?这是 iOS 上的错误还是缺少某些权限。
解决方案:
添加 Info.plist 文件中缺少的权限:
<key>NSPhotoLibraryUsageDescription</key>
<string>Application needs to access photos</string>
适用于 iOS 11+
<key>NSPhotoLibraryAddUsageDescription</key>
<string>Application needs to access photos</string>
现在保存图像操作正常。