2013-04-05 10 views
6

L'immagine allegata è solo "Allegato 1", senza estensione. Come posso specificarne uno?UIActivityViewController che condividono l'immagine via e-mail non ha estensione

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

risposta

14

Secondo this answer si dovrebbe essere in grado di utilizzare questa soluzione per specificare un nome di file

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

Lo svantaggio evidente di questo approccio è che si dovrà salvare l'immagine sul disco.

+1

Grazie, dovrebbe funzionare. È fastidioso che Apple non prenda più sul serio questo tipo di funzionalità. Qualcuno di Google ha bisogno di dare loro una lezione sull'interoperabilità delle app sandboxed, Android lo ha fatto così bene sin dall'inizio con Intents. ... * ~ sospiro ~ * spero che iOS 7 lo cambi. –

+0

Questo aiuta anche a condividere file .png! Quando condividi semplicemente un UIImage, viene convertito automaticamente in jpeg. Ottima soluzione! – Klaas

+3

Se si passa l'NSData dell'immagine nell'array activityItems, funziona anche. Quindi non è necessario scrivere effettivamente su un file. – timeuser

0

Credito a tempo suggerimento dell'utente, conversione di UIImage in NSData.

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