要在UIActivityViewController 邮件中添加一个屏幕截图附件,屏幕截图不需要存在数据库中。
代码:
-(IBAction)ActivityController:(id)sender {{
NSString *shareString = @"";
UIImage *shareImage = [UIImage imageNamed:@""];
NSURL *shareUrl = [NSURL URLWithString:@""];
NSArray *activityItems = [NSArray arrayWithObjects:shareString,shareImage, shareUrl, nil];
UIActivityViewController *activityViewController = [[UIActivityViewController alloc] initWithActivityItems:activityItems applicationActivities:nil];
activityViewController.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
[self presentViewController:activityViewController animated:YES completion:nil];
MFMailComposeViewController *mailController = [[MFMailComposeViewController alloc] init];
mailController.mailComposeDelegate = self;
UIGraphicsBeginImageContext(self.view.bounds.size);
[self.view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
NSData *exportData = UIImageJPEGRepresentation(image ,1.0);
[mailController addAttachmentData:exportData mimeType:@"image/jpeg" fileName:@"Screenshot.jpeg"];
但是邮件中的附件没添加成功。
这段代码显示了如何使用 UIActivityViewController 分享项目中的文本、图片和 URL。但是它还没有将屏幕截图附加到电子邮件中。
其中一个问题是,在使用 UIActivityViewController 之前,已经创建并配置了 MFMailComposeViewController 实例。而应该在邮件视图控制器配置完成之后在邮件附件添加截图。
另一个问题是,在邮件视图控制器的配置完成之后,应使用 presentViewController:animated:completion: 方法将其显示出来。
下面是正确的代码片段:
MFMailComposeViewController *mailController = [[MFMailComposeViewController alloc] init];
mailController.mailComposeDelegate = self;
// 将屏幕截图添加到邮件附件
UIGraphicsBeginImageContext(self.view.bounds.size);
[self.view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
NSData *exportData = UIImageJPEGRepresentation(image ,1.0);
[mailController addAttachmentData:exportData mimeType:@"image/jpeg" fileName:@"Screenshot.jpeg"];
[self presentViewController:mailController animated:YES completion:nil];
在这段代码中,首先创建并配置 MFMailComposeViewController 实例,然后使用 UIGraphicsBeginImageContext 和 UIGraphicsGetImageFromCurrentImageContext 函数将屏幕截图添加到邮件附件中。最后,使用 presentViewController:animated:completion: 方法将邮件视图控制器显示出来。