【问题标题】:Default Sharing in iOS 7iOS 7 中的默认共享
【发布时间】:2013-11-10 01:25:59
【问题描述】:

我在大多数支持 iOS 7 的 iOS 应用程序中都看到了这种共享选项格式(如下图所示)。 是否有默认代码/框架可用于实现此共享选项,如下图所示?

【问题讨论】:

标签: ios ios7 share social-networking airdrop


【解决方案1】:

您正在寻找的是UIActivityViewController

既然你问了一个一般性问题,我只能给你一个documentation的链接

【讨论】:

    【解决方案2】:

    除了接受的答案,一小段示例代码

    - (void)shareText:(NSString *)text andImage:(UIImage *)image andUrl:(NSURL *)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];
        }
    

    致电shareText,将不想分享的内容留在nil

    [self shareText:@"Hello world" andImage:nil andUrl:nil];
    

    【讨论】:

      【解决方案3】:

      您发布的图片中的 Controller 是类文档中的 UIActivitiyViewController this is a link

      【讨论】:

        【解决方案4】:

        一些很好的示例代码: How to display the default iOS 6 share action sheet with available share options?

        我知道这个问题是 iOS 7 特有的,并且代码示例指定了 iOS 6,但是 AFAICT 他们非常相似,可能会发现示例代码和我一样有用。

        【讨论】:

          【解决方案5】:

          UIActivityViewController 是您正在寻找的。

          您可以指定项目或应用程序

          UIActivityViewController *actCont = [[UIActivityViewController alloc] initWithActivityItems:activityItems applicationActivities:nil];
          

          【讨论】:

            【解决方案6】:

            只需将以下代码用于默认共享。您可以根据需要将更多项目添加到shareItems 数组中。

            NSMutableArray *shareItems = [[NSMutableArray alloc] initWithObjects: 
                                             @"Hello", 
                                             [UIImage imageNamed:@"your_image.png"], 
                                             @"http://google.com/", nil];
            [self shareItemToOtherApp:shareItems];
            

            以下方法是默认将文本或图像共享到其他应用程序:-

            -(void)shareItemToOtherApp:(NSMutableArray *)shareItems{
                UIActivityViewController *shareController = [[UIActivityViewController alloc]
                                                             initWithActivityItems: shareItems applicationActivities :nil];
            
                [shareController setValue:@"Sharing" forKey:@"subject"];
                shareController.excludedActivityTypes = @[UIActivityTypePostToWeibo, UIActivityTypeAssignToContact, UIActivityTypePrint, UIActivityTypeCopyToPasteboard, UIActivityTypeSaveToCameraRoll];
            
                shareController.completionHandler = ^(NSString *activityType, BOOL completed)
                {
                    //NSLog(@" activityType: %@", activityType);
                    //NSLog(@" completed: %i", completed);
                };
            
                [self presentViewController: shareController animated: YES completion: nil];
            }
            

            如果您想制作 自定义分享 表格,请使用以下代码。为此,您必须导入 <Social/Social.h> 框架。

            -(void)shareOnFacebook:(id)sender {
                if ([SLComposeViewController isAvailableForServiceType:SLServiceTypeFacebook])
                {
                    SLComposeViewController *faceSheet = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeFacebook];
                    // NSLog(@"%@", messageField.text);//This returns the appropriate string
                    [faceSheet setInitialText:@"Hellooooooo"];
                    //The facebook VC appears, but initial text is not set to messageField.text
                    [self presentViewController:faceSheet animated:YES completion:nil];
                }
                else
                {
                    NSLog(@"Please first install Application and login in Facebook");
                }
            }
            
            -(void)shareOnTwitter:(id)sender {
                if ([SLComposeViewController isAvailableForServiceType:SLServiceTypeTwitter])
                {
                    SLComposeViewController *tweetSheet = [SLComposeViewController
                                                           composeViewControllerForServiceType:SLServiceTypeTwitter];
                    [tweetSheet setInitialText:@"Hello"];
                    [self presentViewController:tweetSheet animated:YES completion:nil];
                }
                else{
                    NSLog(@"Please first install Application and login in Twitter");
                }
            }
            

            希望,这就是您要找的。任何问题都可以回复我。 :)

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2014-05-31
              • 2012-11-10
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2013-07-19
              相关资源
              最近更新 更多