2013-04-05 10 views
6

添付されている画像は「添付ファイル-1」です。拡張子はありません。どのように指定するのですか?電子メールで共有するUIActivityViewControllerには、拡張子がありません

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

答えて

14

this answerによると、あなたが

ファイル名を指定するには、この回避策を使用することができるはず
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]; 

このアプローチの明らかな欠点は、あなたがディスクに画像を保存する必要がありますということです。

+1

ありがとうございます。 Appleがこの種の機能をより真剣に受け入れていないのは迷惑だ。 Googleの誰かがサンドボックスアプリの相互運用性について教訓を伝える必要があります。Androidは最初からインテントでこれほどうまくやっています。 ... *〜しばらく〜*うまくいけば、iOS 7はそれを変更します。 –

+0

これは.pngファイルの共有にも役立ちます! UIImageを共有するだけで自動的にjpegに変換されます。素晴らしい解決策! – Klaas

+3

imageのNSDataをactivityItems配列に渡すと、それも機能します。実際にファイルに書き出す必要はありません。 – timeuser

0

UIImageをNSDataに変換して、timeuserの提案をしてください。

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