1

我正在使用 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 无法保存到保存的相册:Error Domain=AVFoundationErrorDomain Code=-11828 "Nie można otworzyć" UserInfo={NSUnderlyingError=0x1c08558d0 {Error Domain=NSOSStatusErrorDomain Code=-12847 "(null)"}, NSLocalizedFailureReason=Ten format multimediów nie jest obsługiwany。 , NSURL=file:///private/var/mobile/Containers/Data/Application/29B8C33B-9247-45FE-B51F-A35A035019A9/tmp/notImportant.jpg, NSLocalizedDescription=Nie można otworzyć}

当我使用 png/UIImagePNGRepresentation 时也会发生同样的情况。所以问题是:

  1. iOS 11 是否支持 png/jpg?

  2. 对于操作系统版本 >= 11 的设备,我应该使用/以及如何使用 HEIF(新的苹果图像格式)?

4

2 回答 2

0

NSOSStatusErrorDomain 代码表示属性数据大小不正确。

OSStatus 是 OS X 和 iOS 中常用的错误代码类型。如果代码量级小于 100 万,那么代码很可能在 CarbonCore 框架中的 MacErrors.h 中列出。否则,它可能是在与返回它的函数相同的标题中列出的四字符代码。您可以通过在 Xcode 中通过命令单击来找到函数的标题。这些代码很可能会列在顶部附近,并组合在一起。要将数字转换为代码,请使用开发人员视图中的计算器应用程序将其转换为十六进制并将每个字节转换为字符。

于 2017-07-19T11:26:23.887 回答
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>

现在保存图像操作正常。

于 2020-12-22T15:53:18.513 回答