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 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料