Могу ли я сделать свое приложение снимок экрана с содержимым представления и прикрепить его к электронной почте? Как?
Как сделать снимок экрана и отправить его по электронной почте?
Ответ 1
Вы можете преобразовать свое изображение в изображение, затем вы можете создать с ним электронное письмо.
Этот код (отсюда) позволит вам отправить электронное письмо с приложением:
- (void)emailImageWithImageData:(NSData *)data
{
MFMailComposeViewController *picker = [[MFMailComposeViewController alloc] init];
picker.mailComposeDelegate = self;
// Set the subject of email
[picker setSubject:@"Picture from my iPhone!"];
// Add email addresses
// Notice three sections: "to" "cc" and "bcc"
[picker setToRecipients:[NSArray arrayWithObjects:@"[email protected]", @"[email protected]", nil]];
[picker setCcRecipients:[NSArray arrayWithObject:@"[email protected]"]];
[picker setBccRecipients:[NSArray arrayWithObject:@"[email protected]"]];
// Fill out the email body text
NSString *emailBody = @"I just took this picture, check it out.";
// This is not an HTML formatted email
[picker setMessageBody:emailBody isHTML:NO];
// Attach image data to the email
// 'CameraImage.png' is the file name that will be attached to the email
[picker addAttachmentData:data mimeType:@"image/png" fileName:@"CameraImage"];
// Show email view
[self presentModalViewController:picker animated:YES];
//if you have a navigation controller: use that to present, else the user will not
//be able to tap the send/cancel buttons
//[self.navigationController presentModalViewController:picker animated:YES];
// Release picker
[picker release];
}
- (void)mailComposeController:(MFMailComposeViewController*)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error
{
// Called once the email is sent
// Remove the email view controller
[self dismissModalViewControllerAnimated:YES];
}
Чтобы преобразовать графическое представление вида в изображение, используйте код (здесь):
UIGraphicsBeginImageContext(self.window.bounds.size);
[self.window.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
NSData * data = UIImagePNGRepresentation(image);
[self emailImageWithImageData:data];
Ответ 2
От этот сайт:
// CREATING MAIL VIEW
MFMailComposeViewController *controller = [[MFMailComposeViewController alloc] init];
controller.mailComposeDelegate = self;
[controller setSubject:@"Check this route out"];
[controller setMessageBody:@"Attaching a shot of covered route." isHTML:NO];
// MAKING A SCREENSHOT
UIGraphicsBeginImageContext(_mapView.frame.size);
[_mapView.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *screenshot = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
// ATTACHING A SCREENSHOT
NSData *myData = UIImagePNGRepresentation(screenshot);
[controller addAttachmentData:myData mimeType:@"image/png" fileName:@"route"];
// SHOWING MAIL VIEW
[self presentModalViewController:controller animated:YES];
[controller release];
Ответ 3
Да, вы можете проверить, что приведенный ниже код может помочь вам
UIGraphicsBeginImageContext(self.view.bounds.size);
[self.view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage* image = [GMSScreenshot screenshotOfMainScreen];
UIGraphicsEndImageContext();
data = UIImagePNGRepresentation(image);
[picker addAttachmentData:data mimeType:@"image/jpg" fileName:@"Screenshot"];
Ответ 4
Вот учебник для этого. Вы можете найти исходный код в github этого как wwll.
Сделайте снимок экрана текущего просмотра и прикрепите его к Mail
Надеюсь, что это поможет.
Ответ 5
Попробуйте этот способ
Поместите этот почтовый код внутри Action
if([MFMailComposeViewController canSendMail]){
MFMailComposeViewController *picker = [[MFMailComposeViewController alloc] init];
picker.mailComposeDelegate = self;
[picker setSubject:@"Test Screen Shot From app"];
[picker addAttachmentData: UIImagePNGRepresentation([self screenshot]) mimeType:@"image/png" fileName:@"CameraImage.png"];
[self presentViewController:picker animated:YES completion:nil];
}
Вот скриншот
- (UIImage *) screenshot {
UIGraphicsBeginImageContextWithOptions(self.view.bounds.size, NO, [UIScreen mainScreen].scale);
[self.view drawViewHierarchyInRect:self.view.bounds afterScreenUpdates:YES];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return image;
}
Run and Go!
N.B. Не забудьте импортировать заголовок #import <MessageUI/MFMailComposeViewController.h>