如何使用UIActivityViewController共享PHAsset?

时间:2016-04-20 10:32:08

标签: uiactivityviewcontroller phasset

我现在正试图通过UIActivityViewController分享Phasset(视频或图像)。

AFAIK我以前通过给网址提供网址并使用这样的方式来共享位于我的文档目录中的图像或视频

[[UIActivityViewController alloc] initWithActivityItems:m_arryContents applicationActivities:nil];

但我不知道如何分享phasset。

我想在不下载或导出到我的文档文件夹的情况下共享phasset。

有办法吗?

感谢。

2 个答案:

答案 0 :(得分:1)

我使用以下方法:

NSArray *selectedIndexPaths = [self.collectionView indexPathsForSelectedItems];

NSMutableArray *activityItems = [NSMutableArray array];

// image Loader
PHImageManager *im = [PHImageManager defaultManager];
PHImageRequestOptions *options = [[PHImageRequestOptions alloc] init];
options.synchronous = YES;
options.version = PHImageRequestOptionsVersionCurrent;
options.deliveryMode = PHImageRequestOptionsDeliveryModeOpportunistic;
options.resizeMode = PHImageRequestOptionsResizeModeNone;

for (NSIndexPath *index in selectedIndexPaths)
{
    // load image
    [im requestImageDataForAsset:self.assetsFetchResults[index.item] options:options resultHandler:^(NSData * _Nullable imageData, NSString * _Nullable dataUTI, UIImageOrientation orientation, NSDictionary * _Nullable info)
     {
         [activityItems addObject:imageData];
     }];
}

UIActivityViewController *activityVC = [[UIActivityViewController alloc] initWithActivityItems:activityItems applicationActivities:nil];
// prevent sharing to gallery again
activityVC.excludedActivityTypes = @[UIActivityTypeSaveToCameraRoll];

首先我尝试将NSURL用于该文件,但这不适用于每个共享扩展(例如邮件不起作用,但imessage确实......) 所以我最终分享了图像的NSData。

注意: self.assetsFetchResults是一个PHFetchResults,通过访问我喜欢分享的PHAssets,就像一个简单的NSArray一样。

注2: 我只有PHFetchResults的本地图像!

答案 1 :(得分:0)

目前我无法找到解决方法。 由于这个原因,理光theta和GoPro画廊也没有提供多重共享。也许Apple只允许他们的画廊进行多次共享。

如果有人找到解决方案,请与我分享。感谢。

相关问题