一部のアプリは、共有オプションを備えたiOS 6のデフォルトのアクションシートを表示します。
Social Framework には、作成用と要求用の2つのクラスしかありません。
私が見つけたのは、SLComposeViewControllerを使用して特定のサービスを作成することであり、これを表示する前に、サービスが利用可能かどうかを手動で照会する必要があります。また、独自のアイコンを使用して独自のアクションシートを作成する必要があります。
これらのアプリは、iOS 6でこのデフォルトの共有オプションアクションシートをどのように表示しますか?または、オープンソースフレームワークを使用していますか?
他の答えで述べられている IActivityViewController は、これを簡単にします。あなたがしなければならないのは、共有したいtext/image/URLを指定し、モーダルモードでActivity View Controllerを提示するだけです。iOSは適用可能なすべての共有サービスを自動的に表示します。例:
- (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)
}
これを追加して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];
}