iOS照片扩展finishContentEditingWithCompletionHandler:无法保存更改

前端之家收集整理的这篇文章主要介绍了iOS照片扩展finishContentEditingWithCompletionHandler:无法保存更改前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我的照片扩展程序应用可以访问相机和照片.
一切正常,但按完成后,无法保存图像.

标准完成处理程序代码

  1. - (void)finishContentEditingWithCompletionHandler:(void (^)(PHContentEditingOutput *))completionHandler {
  2. // Update UI to reflect that editing has finished and output is being rendered.
  3.  
  4. // Render and provide output on a background queue.
  5. dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0),^{
  6. PHContentEditingOutput *output = [[PHContentEditingOutput alloc] initWithContentEditingInput:self.input];
  7.  
  8. NSError* error = nil;
  9.  
  10. NSData *renderedJPEGData = UIImageJPEGRepresentation(filtered_ui_image,1.0);
  11. assert(renderedJPEGData != nil);
  12. //BOOL written_well = [renderedJPEGData writeToURL:output.renderedContentURL atomically:YES];
  13.  
  14. BOOL written_well = [renderedJPEGData writeToURL:output.renderedContentURL options:NSDataWritingAtomic error:&error];
  15. assert(written_well);
  16.  
  17.  
  18.  
  19. // Call completion handler to commit edit to Photos.
  20. completionHandler(output);
  21. });
  22. }

renderedJPEGData不是nil,
错误是nil,因此函数[NSData writeToURL]成功,
written_well是,

逐行调试时,块完成后会出现一个警告:

output.renderedContentURL是/private/var/mobile/Containers/Data/PluginKitPlugin/509C1A04-D414-4DB7-B1E6-83C47FC88BC9/tmp/blah_blah_name.JPG

所以,我有权限,调试显示没有错误,我可以尝试检测问题的原因是什么?

解决方法

从iOS 10开始,调整数据必须至少有一个字节.这是iOS 9的重大变化,其中调整数据可以为零.我已经在iOS 9和iOS 10上对此进行了测试以确认.

附加文件https://developer.apple.com/reference/photos/phcontenteditingoutput/1518684-adjustmentdata

  1. PHContentEditingOutput* output = [[PHContentEditingOutput alloc] initWithContentEditingInput:self.input];
  2. NSMutableData* adjustmentData = [NSMutableData data];
  3. uint8_t byte = 1;
  4. [adjustmentData appendBytes:&byte length:1];
  5. output.adjustmentData = [[PHAdjustmentData alloc] initWithFormatIdentifier:@"com.yourcompany.yourapp" formatVersion:@"1.0f" data:adjustmentData];

猜你在找的iOS相关文章