如何使用可用的共享选项显示默认的iOS 6共享操作表?

ope*_*rog 95 ios social-framework

某些应用在iOS 6中显示默认操作表,其中包含共享选项.

社交框架只有两个类,一个用于撰写,一个用于请求.

我发现的是关于使用SLComposeViewController为特定服务进行编写,在显示之前我必须手动查询服务是否可用.然后我还必须使用自己的图标创建自己的操作表.

这些应用程序如何在iOS 6中显示此默认共享选项操作表?或者他们是否使用开源框架?

Mic*_*lum 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];
}
Run Code Online (Sandbox Code Playgroud)

迅速

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)
}
Run Code Online (Sandbox Code Playgroud)

  • 很好的编辑Swift版本.我要更改.=项目的.append(项目).看起来更加快捷 (6认同)
  • 它的工作,只有在设置(facebook/twitter)中登录相应的帐户后,但在照片应用程序/ Notes应用程序中,即使用户未登录,选项也可用,你能解释一下,为什么会这样?或者还有其他一些解决方法? (5认同)
  • 我在iPad上添加了iOS 8支持的编辑 - 您还需要配置`UIActivityViewController`的'UIPopoverController`,否则它会在`present ...'上崩溃.到目前为止,我在编辑中有两次拒绝,所以假设它被拒绝,也许你可以看看是否要自己添加编辑.或不 :-) (4认同)
  • 在最新版本的Swift中,将`AnyObject []()`替换为`[AnyObject]()` (2认同)

Dav*_*ide 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];
}
Run Code Online (Sandbox Code Playgroud)

  • 因为你也显示排除我的首选答案. (2认同)

归档时间:

查看次数:

58333 次

最近记录:

6 年,3 月 前