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 c++头文件不能识别CDialog
  • ¥15 Excel发现不可读取的内容
  • ¥15 UE5#if WITH_EDITOR导致打包的功能不可用
  • ¥15 关于#stm32#的问题:CANOpen的PDO同步传输问题
  • ¥20 yolov5自定义Prune报错,如何解决?
  • ¥15 电磁场的matlab仿真
  • ¥15 mars2d在vue3中的引入问题
  • ¥50 h5唤醒支付宝并跳转至向小荷包转账界面
  • ¥15 算法题:数的划分,用记忆化DFS做WA求调