0

UIGraphicsBeginImageContextからレンダリングされた画像を添付しようとしています。テストとして、フォトアルバムにも画像を追加しています。シミュレーターではすべて完全に機能しますが、デバイスでは正しい画像がフォトアルバムに追加されますが、電子メールの添付ファイルには正しく表示されません。大きな画像で、iPhone3gsでは時間がかかるからだと思います。つまり、画像のレンダリングが完了したかどうかを確認する必要があります。それを行う方法はありますか?これが私のコードです:

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 に答える