当我使用Apple的UIActivityViewController
将一些图像共享给微信时。我发现有时它不起作用。在大多数情况下,当我仅选择1〜3张图像时效果很好,但是如果我共享9张图像(微信允许的最大数量),则肯定会失败,并且控制台将打印
这是代码:
__weak typeof(self) __weakSelf = self;
self.activityViewController = [[UIActivityViewController alloc] initWithActivityItems:self.shareItems applicationActivities:nil];
self.activityViewController.excludedActivityTypes = @[UIActivityTypePostToFacebook,
UIActivityTypePostToTwitter,
UIActivityTypePostToVimeo,
UIActivityTypePostToTencentWeibo,
UIActivityTypePrint,
UIActivityTypeCopyToPasteboard,
UIActivityTypeAssignToContact,
UIActivityTypeSaveToCameraRoll,
UIActivityTypeAddToReadingList,
UIActivityTypePostToFlickr,
];
self.activityViewController.completionWithItemsHandler = ^(NSString * __nullable activityType, BOOL completed, NSArray * __nullable returnedItems, NSError * __nullable activityError){
DLog(@"shareCompleted : %@", completed ? @"YES" : @"NO")
__weakSelf.shareItems = nil;
__weakSelf.activityViewController = nil;
};
[self.containerVc presentViewController:self.activityViewController animated:YES completion:nil];
ShareItems
是实现协议(protocol)UIActivityItemSource
的自定义对象。P.S.我尝试了APP Google Photo,发现它的共享功能做得非常好。它可以使用
UIActivityViewController
向微信分享甚至具有原始高清尺寸的系统照片的9张图像。那么,我该如何解决这个问题呢?
最佳答案
由于应用程序扩展程序的内存限制,微信的共享扩展程序已终止。
根据Apple的App Extension Programming Guide:优化效率和性能
1.我创建了9张非常小的图像,并成功与微信共享:
- (UIImage *)imageWithColor:(UIColor *)color
{
CGRect rect = CGRectMake(0, 0, 1, 1);
UIGraphicsBeginImageContext(rect.size);
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetFillColorWithColor(context, [color CGColor]);
CGContextFillRect(context, rect);
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return image;
}
2.您可以按比例缩小图片,然后再与微信分享,这是一些Scale methods
关于ios - UIActivityViewController共享图像到微信不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36351764/