我正在尝试附加从UIGraphicsBeginImageContext呈现的图像。作为测试,我也将图像添加到相册中。这一切都在模拟器上完美运行,但在设备上正确的图像被添加到相册,但不会正确显示在电子邮件附件中。我认为这是因为它是一个很大的形象,它需要一些时间在iPhone 3gs上。这意味着我必须检查是否完成渲染图像。有办法吗?这是我的代码:
UIGraphicsBeginImageContext(backGround.layer.frame.size);
[backGround.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil);
UIGraphicsEndImageContext();
MFMailComposeViewController *mailer = [[MFMailComposeViewController alloc] init];
mailer.mailComposeDelegate = self;
NSData *imgData = UIImagePNGRepresentation(image);
[mailer addAttachmentData:imgData mimeType:@"image/png" fileName:@"myfilename"];
我想知道,也许它没有完全完成图像,当我正在制作PNG表示时它仍然有损坏的数据。我可以以某种方式检查UIImage是否已“完成”?
答案 0 :(得分:1)
尝试实施完成方法并进行检查。一个例子是,
UIImageWriteToSavedPhotosAlbum(image, self, @selector(image:didFinishSavingWithError:contextInfo:), NULL);
- (void)image:(UIImage *) image didFinishSavingWithError:(NSError *) error contextInfo: (void *) contextInfo {
NSLog(@"SAVE IMAGE COMPLETE");
if(error != nil) {
NSLog(@"ERROR SAVING:%@", [error localizedDescription]);
}
}
根据错误消息,您可以调试错误消息。查看UIImageWriteToSavedPhotosAlbum
documentation了解详情。