利用可能な共有オプションを含むデフォルトのiOS 6共有アクションシートを表示する方法


97

一部のアプリは、iOS 6で共有オプション付きのデフォルトのアクションシートを表示します。

Social Frameworkには、作成用とリクエスト用の2つのクラスしかありません。

私が見つけたのは、SLComposeViewControllerを使用して特定のサービスを構成することです。これを表示する前に、サービスが利用可能かどうかを手動で照会する必要があります。また、独自のアイコンを備えた独自のアクションシートを作成する必要もあります。

これらのアプリは、iOS 6でこのデフォルトの共有オプションアクションシートをどのように表示しますか?または、彼らはオープンソースのフレームワークを使用していますか?


wechat、weibo、qqなどのカスタムアイコンを使用して共有シートを開き、その機能を統合したいのですが、どうすればよいですか?
Ravi Ojha、2015年

このリンクも確認してください。stackoverflow.com/ a / 35267035/3908884
Doshiを

回答:


223

UIActivityViewController他の回答で述べたが、これは些細なことができます。共有するテキスト/画像/ URLを指定して、アクティビティビューコントローラーをモーダルに提示するだけで、iOSは該当するすべての共有サービスを自動的に表示します。例:

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

迅速

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)
}

6
Swiftバージョンの素敵な編集。+ =アイテムの.append(item)を変更します。より迅速に見える
Ignacio Inglese 2014

2
Swiftの最新バージョンで置き換えAnyObject[]()てください[AnyObject]()
Ruben Martinez Jr.

5
その動作は、設定(facebook / twitter)でそれぞれのアカウントにログインした後でのみですが、写真アプリ/メモアプリでは、ユーザーがログインしていなくてもオプションを使用できます。理由は何ですか?または他の回避策はありますか?
Jaldip Katre 2014

4
私は、iPad上のiOS 8のサポートのために編集を追加しました-あなたはまた、設定する必要があるUIActivityViewControllerのをUIPopoverControllerかそれがクラッシュしますpresent…。私はこれまでに編集で3回の拒否を2回行ったので、それが拒否されたと仮定すると、編集を自分で追加するかどうかを確認できます。か
どう

ああ、編集はすべてを説明するこの答えを引用しいます。
ベンジョン2014年

39

これを追加してを使用し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];
}

2
除外も表示するので、私への優先的な回答。
ホセ・
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.