Ios UIActivityViewController通过电子邮件共享图像没有扩展名

Ios UIActivityViewController通过电子邮件共享图像没有扩展名,ios,cocoa-touch,Ios,Cocoa Touch,所附图像仅为“附件1”,无扩展名。如何指定一个 NSData *compressedImage = UIImageJPEGRepresentation(self.resultImage, 0.8 ); UIActivityViewController *activityViewController = [[UIActivityViewController alloc] initWithActivityItems:@[ @"Check this out!", compressed

所附图像仅为“附件1”,无扩展名。如何指定一个

    NSData *compressedImage = UIImageJPEGRepresentation(self.resultImage, 0.8 );

    UIActivityViewController *activityViewController = [[UIActivityViewController alloc] initWithActivityItems:@[ @"Check this out!", compressedImage ] applicationActivities:nil];

    [self.navigationController presentViewController:activityViewController animated:YES completion:nil];
根据需要,您应该能够使用此变通方法来指定文件名

NSData *compressedImage = UIImageJPEGRepresentation(self.resultImage, 0.8 );
NSString *docsPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString *imagePath = [docsPath stringByAppendingPathComponent:@"image.jpg"];
NSURL *imageUrl     = [NSURL fileURLWithPath:imagePath];

[compressedImage writeToURL:imageUrl atomically:YES]; // save the file
UIActivityViewController *activityViewController = [[UIActivityViewController alloc] initWithActivityItems:@[ @"Check this out!", imageUrl ] applicationActivities:nil];

这种方法的明显缺点是必须将映像保存在磁盘上。

归功于timeuser的建议,将UIImage转换为NSData

NSData * data = UIImageJPEGRepresentation(original,1.0);
UIActivityViewController * activity =[[UIActivityViewController alloc] initWithActivityItems:@[@"Your Text", data] applicationActivities:nil];
[self presentViewController:activity animated:true completion:^{ }];

谢谢,应该行了。令人恼火的是,苹果没有更认真地对待这种功能。谷歌需要有人给他们上一堂关于沙盒应用程序互操作的课,安卓从一开始就在意图方面做得很好~叹气~希望iOS 7能改变它。这也有助于共享.png文件!当您仅共享UIImage时,它会自动转换为jpeg。伟大的解决方案!如果在activityItems数组中传递图像的NSData,它也可以工作。您不需要实际写入文件。@timeuser但它不允许您更改文件名,除非有默认的image1.jpg?这似乎对我不起作用。如果我在活动项数组中传递文件名,那么它只会尝试保存2个文件。。。一个是包含名称的文本文档,另一个是我试图保存的实际文件/数据。