如何使用 UIActivityViewController 共享 PHAsset?
How to share PHAsset by using UIActivityViewController?
我现在正尝试通过 UIActivityViewController 共享 Phasset(视频或图像)。
AFAIK 我过去常常通过给数组 url 并像这样使用
来共享位于我的文档目录中的图像或视频
[[UIActivityViewController alloc] initWithActivityItems:m_arryContents applicationActivities:nil];
但我不知道如何共享 phasset。
我想共享 phaseset 而不下载或导出到我的文档文件夹。
有办法吗?
谢谢。
目前我找不到任何解决方案。
Ricoh theta 和 GoPro gallery 也因此不提供多重分享。也许 Apple 只允许对他们的画廊进行多重共享。
如果有人找到解决方案,请与我分享。谢谢。
我正在使用以下方法:
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!
我现在正尝试通过 UIActivityViewController 共享 Phasset(视频或图像)。
AFAIK 我过去常常通过给数组 url 并像这样使用
来共享位于我的文档目录中的图像或视频[[UIActivityViewController alloc] initWithActivityItems:m_arryContents applicationActivities:nil];
但我不知道如何共享 phasset。
我想共享 phaseset 而不下载或导出到我的文档文件夹。
有办法吗?
谢谢。
目前我找不到任何解决方案。 Ricoh theta 和 GoPro gallery 也因此不提供多重分享。也许 Apple 只允许对他们的画廊进行多重共享。
如果有人找到解决方案,请与我分享。谢谢。
我正在使用以下方法:
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!