TJActivityViewController
TJActivityViewController
是一个 UIActivityViewController
的便捷子类,使您可以轻松覆盖操作,无需实现 UIActivityItemSource
。
用法
您可以使用以下方法使用块覆盖特定活动或与正则表达式匹配的活动:
UIImage *imageToShare = /* ... */;
TJActivityViewController *viewController = [[TJActivityViewController alloc] initWithActivityItems:@[imageToShare] applicationActivities:nil];
// Override Facebook sharing with a block.
[viewController overrideActivityType:UIActivityTypePostToTwitter withBlock:^{
// Launch a custom Twitter share action.
}];
// Override actions matching a regex.
[viewController overrideActivityTypeMatchingRegex:@"com\\.foo\\.bar\\..*" withBlock:^{
// Custom sharing actions.
}];
您还可以使用以下方法使用块覆盖传递给特定活动的项:
[viewController overrideItemForActivityType:@"com.toyopagroup.picaboo.share" // Snapchat's share extension
withBlock:^id {
return /* a 9:16 image cropped just for Snapchat. */;
}];
原因
UIActivityItemSource
是一个强大的 API,通过 UIActivityViewController
进行共享,但使用起来有些繁琐,覆盖操作时也有局限性。现在许多产品都有自己的自定义共享 SDK,这些 SDK 比内置的扩展功能更强大,但使用 UIActivityViewController
的开发者被迫使用功能较弱的共享扩展。
一些开发者为克服 UIActivityViewController
的这一限制而建立了自己的专用共享菜单,但这导致了产品之间共享体验的碎片化和不完整。《TJActivityViewController》为您提供两者之优:您可以使用标准的 iOS 分享菜单,同时还可以使用您自己的特殊触感来定制分享选项。
有关此主题的更详细博客文章,请参阅此处。
关于
我最初为Close-up编写了TJActivityViewController
,后来也在Burst中使用了它。如果你决定使用TJActivityViewController
,请告诉我!