Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在IOS 11中将JPG/PNG照片保存到图库时出错_Ios_Objective C_Ios11_Heif - Fatal编程技术网

在IOS 11中将JPG/PNG照片保存到图库时出错

在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

我用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中是否支持png/jpg

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


  • 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];