garaster 2013-08-12 08:07 采纳率: 0%
浏览 2083

定制UIActivityViewController

要在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"];

但是邮件中的附件没添加成功。

  • 写回答

1条回答

  • ChatGPTᴼᴾᴱᴺᴬᴵ 2023-01-12 10:02
    关注

    这段代码显示了如何使用 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: 方法将邮件视图控制器显示出来。

    评论

报告相同问题?

悬赏问题

  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突
  • ¥15 超声波模块测距控制点灯,灯的闪烁很不稳定,经过调试发现测的距离偏大
  • ¥15 import arcpy出现importing _arcgisscripting 找不到相关程序
  • ¥15 onvif+openssl,vs2022编译openssl64
  • ¥15 iOS 自定义输入法-第三方输入法
  • ¥15 很想要一个很好的答案或提示
  • ¥15 扫描项目中发现AndroidOS.Agent、Android/SmsThief.LI!tr
  • ¥15 怀疑手机被监控,请问怎么解决和防止