0

我正在尝试附加从 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 是否“完成”吗?

4

1 回答 1

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文档以获取更多详细信息。

于 2012-10-26T19:39:23.150 回答