UIImage 仅用于所选的 applicationActivities,但 NSString 用于所有 applicationActivities
Posted
技术标签:
【中文标题】UIImage 仅用于所选的 applicationActivities,但 NSString 用于所有 applicationActivities【英文标题】:UIImage only for the chosen applicationActivities, but NSString for all applicationActivities 【发布时间】:2014-02-03 20:53:35 【问题描述】:我正在使用 UIActivityViewController 来共享 NSString 和 UIImage,但我不想与 iMessage 和电子邮件共享 UIImage。
如何为 UIImage 创建这样一个自定义 UIActivity 并为所有人保留 NSString?
【问题讨论】:
【参考方案1】:当你创建你的 UIActivityViewController 时,你传递了一个活动项数组。
您在该数组中传递的对象可以是采用UIActivityItemSource protocol 的对象。
如果您发送 UIImage,为什么不创建一个“ImageItemProvider
”对象,然后实现自己的 "activityViewController:itemForActivityType:
" 方法,如果您不想通过 iMessage 共享图像,则返回“nil
”或电子邮件。
例如:
//- Returns the data object to be acted upon. (required)
- (id)activityViewController:(UIActivityViewController *)activityViewController itemForActivityType:(NSString *)activityType
if ([activityType isEqualToString:UIActivityTypeMail])
return nil;
if ([activityType isEqualToString:UIActivityTypeMessage])
return nil;
return [UIImage imageNamed:@"the image you wanted returned"];
我的回答是基于the code I found in this tutorial。
【讨论】:
这是一些想法,但 UIImage 是动态的(捕获视图),所以如果我创建一个新对象 UIActivityViewController 将加载太长时间。我认为,最好的方法是在主视图中简单地编写代码,但我现在不知道如何:( 如果生成要共享的东西可能需要一段时间,您可能需要考虑使用 UIActivityItemProvider。以上是关于UIImage 仅用于所选的 applicationActivities,但 NSString 用于所有 applicationActivities的主要内容,如果未能解决你的问题,请参考以下文章
Android - 用于共享的选择器对话框 - 不同的意图取决于所选的应用程序?
如何在Swift中的UITableView中截取所选行的屏幕截图并将其保存为UIImage?