webentwicklung-frage-antwort-db.com.de

Wie zeige ich das Standardaktionsblatt für iOS 6-Freigaben mit verfügbaren Freigabeoptionen an?

Einige Apps zeigen in iOS 6 ein Standardaktionsblatt mit Freigabeoptionen an.

Social Framework hat nur zwei Klassen, eine zum Komponieren und eine zum Anfordern.

Ich habe jedoch festgestellt, dass es darum geht, mit SLComposeViewController für einen bestimmten Dienst zu komponieren, und bevor ich dies zeige, muss ich manuell abfragen, ob der Dienst verfügbar ist. Und dann muss ich auch noch ein eigenes Aktionsblatt mit eigenen Symbolen erstellen.

Wie zeigen diese Apps dieses Standardaktionsblatt für Freigabeoptionen in iOS 6 an? Oder verwenden sie ein Open Source Framework?

95
openfrog

Das in der anderen Antwort angegebene IActivityViewController macht dies trivial. Sie müssen lediglich den Text/das Bild/die URL angeben, die Sie freigeben möchten, und den Aktivitätsansichts-Controller modal anzeigen. IOS zeigt dann automatisch alle zutreffenden Freigabedienste an. Beispiele:

Ziel c

- (void)shareText:(NSString *)text andImage:(UIImage *)image andUrl:(URL *)url
{
    NSMutableArray *sharingItems = [NSMutableArray new];

    if (text) {
        [sharingItems addObject:text];
    }
    if (image) {
        [sharingItems addObject:image];
    }
    if (url) {
        [sharingItems addObject:url];
    }

    UIActivityViewController *activityController = [[UIActivityViewController alloc] initWithActivityItems:sharingItems applicationActivities:nil];
    [self presentViewController:activityController animated:YES completion:nil];
}

Swift

func share(sharingText: String?, sharingImage: UIImage?, sharingURL: URL?) {
    let sharingItems:[AnyObject?] = [
                                        sharingText as AnyObject,
                                        sharingImage as AnyObject,
                                        sharingURL as AnyObject
                                    ] 
    let activityViewController = UIActivityViewController(activityItems: sharingItems.compactMap({$0}), applicationActivities: nil)
    if UIDevice.current.userInterfaceIdiom == .pad {
        activityViewController.popoverPresentationController?.sourceView = view
    }
    present(activityViewController, animated: true, completion: nil)
}
223
Mick MacCallum

Fügen Sie dies hinzu, um UIActivityViewController zu verwenden.

-(IBAction)shareButtonPressed:(id)sender {

    NSLog(@"shareButton pressed");

    NSString *texttoshare = _txt; //this is your text string to share
    UIImage *imagetoshare = _img; //this is your image to share
    NSArray *activityItems = @[texttoshare, imagetoshare];    
    UIActivityViewController *activityVC = [[UIActivityViewController alloc] initWithActivityItems:activityItems applicationActivities:nil];
    activityVC.excludedActivityTypes = @[UIActivityTypeAssignToContact, UIActivityTypePrint];
    [self presentViewController:activityVC animated:TRUE completion:nil];
}
39
Davide