从iOS SDK docs,操作扩展程序可以帮助用户编辑他们在文本编辑器中查看的文档中的图像。但是我一直试图谷歌如何做到这一点的例子,只能找到有关如何创建应用扩展程序的文章,而不是如何在应用程序中使用。< / p>
假设我正在为iOS编写文字处理应用程序。想象用户在应用程序中具有嵌入图像并且想要编辑图像(例如,应用照片效果)。应用程序如何将提供图像到用户在系统中安装的任何图像编辑应用程序,让它做到这一点,然后接收结果?
我认为交互风格与Mac上的LinkBack非常相似。除了图像编辑器是应用程序扩展并显示为模式对话框(根据SDK指南)。
但是我找不到任何显示的代码示例:
答案 0 :(得分:0)
与此同时,我发现了如何做到这一点。它主要围绕UIActivityViewController
,并向控制器提供回调块以接收来自操作扩展的结果。
以下示例使用Skitch作为测试操作扩展。
// get the source image
UIImage* image = ...;
NSArray* activityItems = @[image];
UIActivityViewController* activityCtrl = [[UIActivityViewController alloc] initWithActivityItems:activityItems applicationActivities:nil];
activityCtrl.completionWithItemsHandler = ^(NSString *activityType, BOOL completed, NSArray *returnedItems, NSError *activityError) {
[returnedItems enumerateObjectsUsingBlock:^(NSExtensionItem* _Nonnull item, NSUInteger idx, BOOL * _Nonnull stop1) {
[item.attachments enumerateObjectsUsingBlock:^(NSItemProvider* _Nonnull attachment, NSUInteger idx, BOOL * _Nonnull stop2) {
if ([attachment hasItemConformingToTypeIdentifier:(__bridge id)kUTTypeImage]) {
[attachment loadItemForTypeIdentifier:(__bridge id)kUTTypeImage options:nil completionHandler:^(UIImage* returnedImage, NSError * _Null_unspecified error) {
// returnedImage is the result of the action extension
}];
*stop1 = YES;
*stop2 = YES;
}
}];
}];
};
// assume that `self` is a UIViewController
[self presentViewController:activityCtrl animated:YES completion:nil];
不幸的是,动作扩展提供程序有点罕见,因此我无法测试它实际上如何与可以生成图像的其他动作扩展进行交互。