2013-05-06 8 views
5

Quando condividi un URL con UIActivityViewController, mostra solo la bussola Safari. Capisco che questo dovrebbe mostrare all'utente che stanno condividendo un link, ma è possibile ottenere questo per mostrare una miniatura/immagine, invece? Mi rendo conto che lo fa se provo a condividere un'immagine, ma volevo solo condividere un link qui.Mostra miniatura per allegato url su UIActivityViewController

risposta

1

Invece di condividere direttamente un NSURL, è possibile condividere un oggetto che implementa il protocollo UIActivityItemSource. Questo può essere solo un oggetto che racchiude lo NSURL e lo restituisce quando viene chiamato il metodo activityViewController:itemForActivityType:.

È quindi possibile implementare il metodo opzionale activityViewController:thumbnailImageForActivityType:suggestedSize: per fornire una miniatura per la finestra di dialogo Condividi.

Ad esempio:

@interface URLWrapper:UIActivityItemProvider 

@property (nonatomic, strong) NSURL *url; 

@end 

@implementation URLWrapper 

+ (instancetype)activityItemSourceUrlWithUrl:(NSURL *)url { 
    URLWrapper *wrapper = [[self alloc] initWithPlaceholderItem:@""]; 
    wrapper.url = url; 

    return wrapper; 
} 

- (id)activityViewControllerPlaceholderItem:(UIActivityViewController *)activityViewController { 
    return [self activityViewController:activityViewController itemForActivityType:nil]; 
} 

- (id)activityViewController:(UIActivityViewController *)activityViewController itemForActivityType:(NSString *)activityType { 
    return self.url; 
} 

- (UIImage *)activityViewController:(UIActivityViewController *)activityViewController thumbnailImageForActivityType:(NSString *)activityType suggestedSize:(CGSize)size { 
    UIImage* thumbnail; // get image from somewhere! 
    return thumbnail; 
} 

@end 

È quindi possibile condividere gli URL avvolti proprio come si farebbe condividere casi normali di NSURL.

+2

Questo non sembra funzionare (testato con XCode7/iOS9). thumbnailImageForActivityType non viene mai chiamato. Ho provato con Facebook e le opzioni di condivisione della posta. Forse funziona con qualche altra opzione di condivisione. – Ciryon

+1

Penso che thumbnailImageForActivityType sia usato per condividere immagini come in Foto puoi selezionare le immagini – CiNN