4

我已经UIActivityViewController在我的应用程序中实现了,并且可以成功共享字符串和图像。但是,我注意到当您在 iOS 照片应用程序中共享图像时,有些服务没有出现在我的应用程序中。即打印、用作墙纸、分配给联系人和照片流。我的应用程序能够很好地使用邮件、消息、Facebook、Twitter 和复制。

我在想:

1.) 这些额外服务已在照片应用程序中使用UIActivityItemProviderUIActivityItemSource等作为自定义服务实现。

2.) 我提供的数据格式不正确,无法与这些服务一起使用。

我已经阅读了几次文档,但似乎没有看到任何关于它的内容。

编辑:按要求显示代码:

#define SM_SHARE_IMAGE_AND_STRING 1

-(void)actionToolbarViewControllerUserTappedShareButton:(SMActionToolbarViewController*)sender{
    // Reposition anchor view for UIPopoverController to point at
    [self repositionAnchorViewToButtonFrame:self.actionToolbarViewController.shareButtonFrame];

    // Asynch download of image
    [SMUtility downloadAsset:self.selectedAsset completion:^(UIImage *image) {
        // Create image source
        SMActivitySource *activityImageSource = [[SMActivitySource alloc]initWithImage:image];
#if defined(SM_SHARE_IMAGE_AND_STRING)
        // Create string source
        NSString *assetsString = [SMUtility assetsString:[NSArray arrayWithObject:self.selectedAsset]];
        SMActivitySource *activityStringSource = [[SMActivitySource alloc]initWithString:assetsString];

        // Present UIActiviyViewController within an UIPopoverController
        NSArray *items = [@[activityImageSource, activityStringSource]mutableCopy];
#else
        NSArray *items = [@[activityImageSource]mutableCopy];
#endif

        UIActivityViewController *activityViewController = [[UIActivityViewController alloc]initWithActivityItems:items applicationActivities:nil];
        [activityViewController setCompletionHandler:^(NSString *activityType, BOOL completed){
            [SMMixPanel eventSharePhotoMethod:@"Share"];
        }];
        self.buttonPopoverController = [[UIPopoverController alloc] initWithContentViewController:activityViewController];
        [self.buttonPopoverController presentPopoverFromRect:self.anchorView.frame inView:self.view permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
    }];
}
4

1 回答 1

5
  1. UIActivityViewController只要您提供正确的数据,打印和分配给联系人活动都是标准活动。
  2. 您必须为UIImage分配给联系人活动提供一个。请参阅UIActivityTypeAssignToContact. UIActivityTypePrint有关它接受的内容的详细信息,请参阅文档。

“用作墙纸”似乎是仅在照片应用程序中显示的自定义活动。

于 2013-05-15T18:00:40.180 回答