How to display the default iOS 6 share action sheet with available share options?

后端 未结 2 1404
难免孤独
难免孤独 2020-11-30 17:20

Some apps show a default action sheet in iOS 6 with sharing options.

Social Framework only has two classes, one for composing and one for request.

What I fo

相关标签:
2条回答
  • 2020-11-30 17:32

    The UIActivityViewController stated in the other answer makes this trivial. All you have to do is specify the text/image/URL that you want to share and present the activity view controller modally and iOS will automatically display all applicable sharing services. Examples:

    Objective-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)
    }
    
    0 讨论(0)
  • 2020-11-30 17:46

    Add this to use the UIActivityViewController.

    -(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];
    }
    
    0 讨论(0)
提交回复
热议问题