如何拍摄视图的屏幕截图并通过电子邮件发送给它?

Ran*_*all 11 iphone objective-c uiview ios

我可以让我的应用程序截取视图内容的屏幕截图并将其附加到电子邮件中吗?怎么样?

ser*_*gio 14

您可以将视图转换为图像,然后可以使用它创建电子邮件.

此代码(从此处开始)将允许您发送包含附件的电子邮件:

    - (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:@"emailaddress1@domainName.com", @"emailaddress2@domainName.com", nil]];
      [picker setCcRecipients:[NSArray arrayWithObject:@"emailaddress3@domainName.com"]];   
      [picker setBccRecipients:[NSArray arrayWithObject:@"emailaddress4@domainName.com"]];

      //    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];
     }
Run Code Online (Sandbox Code Playgroud)

要将视图图形表示转换为图像,请使用代码(从此处):

UIGraphicsBeginImageContext(self.window.bounds.size);
[self.window.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
NSData * data = UIImagePNGRepresentation(image);

[self emailImageWithImageData:data];
Run Code Online (Sandbox Code Playgroud)