UIActivityViewController sharing image via email h

2020-02-29 02:04发布

The image attached is just "Attachment-1", no extension. How do I specify one ?

    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];

2条回答
smile是对你的礼貌
2楼-- · 2020-02-29 02:35

According to this answer you should be able to use this workaround to specify a filename

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];

The obvious drawback of this approach is that you will have to save the image on disk.

查看更多
Bombasti
3楼-- · 2020-02-29 02:56

Credit to timeuser's suggestion, converting UIImage to NSData.

NSData * data = UIImageJPEGRepresentation(original,1.0);
UIActivityViewController * activity =[[UIActivityViewController alloc] initWithActivityItems:@[@"Your Text", data] applicationActivities:nil];
[self presentViewController:activity animated:true completion:^{ }];
查看更多
登录 后发表回答