2016-04-20 8 views
2

Ich versuche jetzt, Phasset (Video oder Bild) durch UIActivityViewController zu teilen.Wie teilen Sie PHAsset mit UIActivityViewController?

AFAIK benutzte ich das Bild oder Video in meinem Dokumentenverzeichnis, indem sie URL-Array und mit wie diese

[[UIActivityViewController alloc] initWithActivityItems:m_arryContents applicationActivities:nil]; 

Aber ich habe keine Ahnung, sich zu teilen, wie ich phasset teilen konnte.

Ich möchte phasset freigeben, ohne herunterzuladen oder in meinen Dokumentenordner zu exportieren.

Gibt es eine Möglichkeit, es zu tun?

Danke.

+0

Haben Sie meinen Code getestet oder haben Sie Fragen dazu? - Wenn ich dich richtig verstanden habe, teilt dieser Code, den ich benutze, genau mehrere PHAsets (oder genau die Bilder, die die PHA-Sets darstellen) –

Antwort

1

Ich verwende die folgende Methode:

NSArray *selectedIndexPaths = [self.collectionView indexPathsForSelectedItems]; 

NSMutableArray *activityItems = [NSMutableArray array]; 

// image Loader 
PHImageManager *im = [PHImageManager defaultManager]; 
PHImageRequestOptions *options = [[PHImageRequestOptions alloc] init]; 
options.synchronous = YES; 
options.version = PHImageRequestOptionsVersionCurrent; 
options.deliveryMode = PHImageRequestOptionsDeliveryModeOpportunistic; 
options.resizeMode = PHImageRequestOptionsResizeModeNone; 

for (NSIndexPath *index in selectedIndexPaths) 
{ 
    // load image 
    [im requestImageDataForAsset:self.assetsFetchResults[index.item] options:options resultHandler:^(NSData * _Nullable imageData, NSString * _Nullable dataUTI, UIImageOrientation orientation, NSDictionary * _Nullable info) 
    { 
     [activityItems addObject:imageData]; 
    }]; 
} 

UIActivityViewController *activityVC = [[UIActivityViewController alloc] initWithActivityItems:activityItems applicationActivities:nil]; 
// prevent sharing to gallery again 
activityVC.excludedActivityTypes = @[UIActivityTypeSaveToCameraRoll]; 

Zuerst habe ich versucht, die NSURL in die Datei zu verwenden, aber das funktioniert nicht mit jedem anteils Erweiterung (zB E-Mail nicht funktioniert hat, aber IMessage tat ...) Also endete ich und teilte die NSData der Bilder.

Hinweis: self.assetsFetchResults ist ein PHFetchResults, das hier wie ein einfaches NSArray verwendet wird, indem auf die PHAssets zugegriffen wird, die ich gerne teile.

Hinweis2: Ich habe nur lokale Bilder in mir PHFetchResults!

+0

Richtig. Für die Bilder würde es funktionieren und gut weg aber wenn Videos in der Liste sind dann müssen wir exportieren um sie zu teilen. Recht? –

+0

Ja, ich denke schon. Das NSURL mit dem Original zu teilen, hat nicht wie erwartet funktioniert :( –

+0

http://StackOverflow.com/a/38167868/3718570 – Ptah

0

Für jetzt kann ich keine Lösung dafür finden. Ricoh Theta und GoPro Galerie bietet aus diesem Grund auch keine Multi-Sharing. Vielleicht erlaubt Apple nur Multi-Sharing nur für ihre Galerie.

Wenn jemand die Lösung finden, teilen Sie mir bitte. Vielen Dank.

Verwandte Themen