如何使用 UIActivityViewController 共享 PHAsset?
Posted
技术标签:
【中文标题】如何使用 UIActivityViewController 共享 PHAsset?【英文标题】:How to share PHAsset by using UIActivityViewController? 【发布时间】:2016-04-20 10:32:07 【问题描述】:我现在正在尝试通过 UIActivityViewController 共享 Phasset(视频或图像)。
AFAIK 我曾经通过将 url 提供给数组并像这样使用来共享位于我的文档目录中的图像或视频
[[UIActivityViewController alloc] initWithActivityItems:m_arryContents applicationActivities:nil];
但我不知道如何共享 phasset。
我想在不下载或导出到我的文件夹的情况下共享 phasset。
有办法吗?
谢谢。
【问题讨论】:
您尝试过我的代码还是对此有疑问? - 如果我说对了,我正在使用的这段代码确实共享多个 PHAsset(或者确切地说是 PHAsset 所代表的图像) 【参考方案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,就像一个简单的 NSArray,通过访问我喜欢共享的 PHAssets。
注2: 我的 PHFetchResults 中只有本地图像!
【讨论】:
对。对于图像,它会起作用并且是很好的方法,但如果列表中有视频,那么我们需要导出以共享。对吗? 是的,我想是的。将 NSURL 共享给原始文件,没有按预期工作:(【参考方案2】:目前我找不到任何解决方案。 理光 theta 和 GoPro 画廊也因此不提供多共享。也许 Apple 只允许对其图库进行多重共享。
如果有人找到解决方案,请分享给我。谢谢。
【讨论】:
以上是关于如何使用 UIActivityViewController 共享 PHAsset?的主要内容,如果未能解决你的问题,请参考以下文章
我在作为 UIDocumentInteractionController 和 UIActivityViewController 的一部分的 UIActivityGroupViewController