Структура MessageUI - изображение не отображается в представлении на iPhone - PullRequest
0 голосов
/ 12 февраля 2012

Я использую платформу MessageUI для отправки и изображения по электронной почте после съемки фотографии с помощью UIImagePickerController.Когда я делаю фотографию и затем вызываю интерфейс почтового сообщения, я получаю окно создания.При тестировании на iPod touch (iOS 4.3.5) и iPad (iOS 5.0.1) я вижу прикрепленное изображение в теле окна создания.При тестировании на iPhone (4S iOS 5.0.1) изображение не появляется в окне создания, а напротив, я вижу прямоугольник размером с вложенное изображение со встроенной маленькой синей рамкой со знаком "?"в нем.

В обоих случаях при отправке почтового сообщения изображение появляется в сообщении, полученном в приложении Почта, - на устройствах iOS и Mac.

Что можно сделать, чтобы это исправить?

ОБНОВЛЕНИЕ: я обошел это, изменив:

NSData *imageData = [NSData dataWithData:UIImagePNGRepresentation(imageToSend)]

на:

NSData *imageDataJPG = [NSData dataWithData:UIImageJPEGRepresentation(imageToSend, 1.0)];

Я не вижу в документах UIKit, что есть что-то вUIImagePNGRпредставление, которое не будет работать на iPhone ...

(Xcode 4.2.1, ARC, 5.0 SDK, развертывание цели 4.3)

Вот код для создания сообщения:

-(void)displayComposerSheet { MFMailComposeViewController *mailPicker = [[MFMailComposeViewController alloc] init]; mailPicker.mailComposeDelegate = self;</p> <pre><code>[mailPicker setSubject:@"Photo"]; NSData *imageData = [NSData dataWithData:UIImagePNGRepresentation(imageToSend)]; [mailPicker addAttachmentData:imageData mimeType:@"image/png" fileName:@"Photo"]; // Fill out the email body text. NSString *line1 = [NSString stringWithFormat: @"I took this photo on my %@.\n", [[UIDevice currentDevice] model]]; NSString *body = [NSString stringWithFormat:@"%@", line1]; [mailPicker setMessageBody:body isHTML:NO]; // Present the mail composition interface. [self presentModalViewController:mailPicker animated:YES];

} ​​

Ответы [ 2 ]

1 голос
/ 26 марта 2012

larik, ваше предложение об использовании JPEG для типа данных сработало отлично.Файлы PNG такого размера в любом случае слишком велики - около 10 МБ.Вот код с данными NSData JPEG:

if ([MFMailComposeViewController canSendMail]) {
    picker = [[MFMailComposeViewController alloc] init];
    [picker setMailComposeDelegate:self];
    [picker setSubject:@"My Picture"];
    NSString *emailBody = @"";
    [picker setMessageBody:emailBody isHTML:YES];
    NSData *data = UIImageJPEGRepresentation(tempImage, 0);
    [picker addAttachmentData:data mimeType:@"image/jpg" fileName:@"CameraImage"];
}
1 голос
/ 12 февраля 2012

Размер изображения ограничен, поэтому, если изображение, которое вы отправляете, больше определенного размера, вы получите эффект, который вы описали выше.

Я посмотрел на свой собственный код и увидел, что у меня есть

#define MAX_MAIL_DIM 1536

Что, кажется, 1024 * 1,5.Извините, я не помню, как я пришел к этому номеру, но подозреваю, что это был метод проб и ошибок.

...