在IOS 11中将JPG/PNG照片保存到图库时出错
我用beta iOS 11在新设备上测试我们的应用程序,发现了一个有趣的错误。 我们正在使用UIActivityViewController(某些系统共享视图控制器)创建可以保存到用户库的图像: 在用户按“保存图像”之前,显示“共享”对话框效果良好。然后,我得到了关于不支持这种图像格式的错误 2017-07-19 10:51:54.292881+0200 appName[6632:766119]视频 /私有/var/mobile/Containers/Data/Application/29B8C33B-9247-45FE-B51F-A35A035019A9/tmp/notImportant.jpg 无法保存到已保存的相册中:错误 Domain=AVFoundationErrorDomain代码=-11828“Nie można otworzyć” UserInfo={NSUnderlyingError=0x1c08558d0{错误 域=NSOSStatusErrorDomain代码=-12847“(空)”}, NSLocalizedFailureReason=十种格式的多媒体文件。, NSURL=file:///private/var/mobile/Containers/Data/Application/29B8C33B-9247-45FE-B51F-A35A035019A9/tmp/notImportant.jpg, NSLocalizedDescription=Nie można otworzyć} 使用png/UIImagePNGRepresentation时也会发生同样的情况。 因此,问题是:在IOS 11中将JPG/PNG照片保存到图库时出错,ios,objective-c,ios11,heif,Ios,Objective C,Ios11,Heif,我用beta iOS 11在新设备上测试我们的应用程序,发现了一个有趣的错误。 我们正在使用UIActivityViewController(某些系统共享视图控制器)创建可以保存到用户库的图像: 在用户按“保存图像”之前,显示“共享”对话框效果良好。然后,我得到了关于不支持这种图像格式的错误 2017-07-19 10:51:54.292881+0200 appName[6632:766119]视频 /私有/var/mobile/Containers/Data/Application/29B8
NSOSStatusErrorDomain代码表示属性数据大小不正确
OSStatus是OSX和iOS中常见的错误代码类型。如果代码的大小小于100万,那么代码可能会列在CarbonCore框架的MacErrors.h中。否则,它可能是一个四个字符的代码,与返回它的函数列在同一个头中。通过在Xcode中单击某个函数的命令,可以找到该函数的标题。代码很可能会列在顶部附近,分组在一起。要将数字转换为代码,请使用“开发人员”视图中的计算器应用程序将其转换为十六进制,并将每个字节转换为一个字符。NSOSStatusErrorDomain代码表示属性数据大小不正确
OSStatus是OSX和iOS中常见的错误代码类型。如果代码的大小小于100万,那么代码可能会列在CarbonCore框架的MacErrors.h中。否则,它可能是一个四个字符的代码,与返回它的函数列在同一个头中。通过在Xcode中单击某个函数的命令,可以找到该函数的标题。代码很可能会列在顶部附近,分组在一起。要将数字转换为代码,请使用开发者视图中的计算器应用程序将其转换为十六进制,并将每个字节转换为一个字符。iOS将图像视为视频?这是iOS上的错误还是缺少某些权限 解决方案: 添加Info.plist文件中缺少的权限:
NSPhotoLibraryUsageDescription
应用程序需要访问照片
iOS 11+
NSPhotoLibraryAddUsageDescription
应用程序需要访问照片
现在“保存图像”操作正常。iOS是否将图像视为视频?这是iOS上的错误还是缺少某些权限 解决方案: 添加Info.plist文件中缺少的权限:
NSPhotoLibraryUsageDescription
应用程序需要访问照片
iOS 11+
NSPhotoLibraryAddUsageDescription
应用程序需要访问照片
现在“保存图像”操作正常。请注意,错误还显示“视频”。我建议报告一个bug并继续。这就是软件仍处于测试阶段的原因。2015年的问题似乎是一样的:请注意,错误还显示“视频”。我建议报告一个bug并继续。这就是软件仍处于测试阶段的原因。2015年似乎存在同样的问题:
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];