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: 方法将邮件视图控制器显示出来。

    评论

报告相同问题?

悬赏问题

  • ¥35 平滑拟合曲线该如何生成
  • ¥100 c语言,请帮蒟蒻写一个题的范例作参考
  • ¥15 名为“Product”的列已属于此 DataTable
  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集