iOS分享扩展

在iOS 8版本中,引入了“共享”扩展名,它使您可以将内容共享到社交服务,例如Facebook,Twitter和其他实用程序。
在此博客中,您将学习2件事。

1.在主机应用程序和扩展程序之间共享数据
2.从扩展名打开主机应用

让我们启动基本的图像选择器应用程序,该应用程序从图库中拍摄图像并在视图中显示。 创建一个示例项目Image Picker。

现在,在Main.storyboard中,将视图控制器嵌入到导航控制器中。

将栏按钮从右侧对象库拖动到视图控制器的导航栏。 将按钮系统项目设置为“ 添加 ”。 设置按钮的选择器以查看名为“ openPhotos ”的控制器。

现在,将集合视图添加到视图控制器中,如上面的屏幕快照所示。 选择收集视图,然后在右侧选择尺寸检查器。 如图所示设置像元间距和截面插图

将其出口拖到名为“ imgCollectionView ”的ViewController类。
为名为“ ImageCollectionCell ”的集合视图单元格的自定义类添加一个新文件。 转到情节提要中,将可重用标识符设置为“ ImageCollectionCell ”,并设置自定义类“ ImageCollectionCell ”。 将ImageView从对象库中拖动到收集单元,然后将名为“ imgView ”的出口设置为自定义类“ ImageCollectionCell ”。

在“ ImageCollectionCell”中定义CellModel结构并按如下所示配置功能

重新运行应用程序,然后点击导航栏中的+按钮。

打开任何相册并选择图像。 选择后,您将关闭imagePicker并将图像添加到集合视图中。

您添加可能作为图像。 让我们继续添加共享扩展名。

要添加共享扩展名,请转至文件 > 新建 > 目标

将名称ImageShare添加到扩展名

现在,在MainInterface.storyboard中,添加一个收集视图并在单元格中添加图像视图。

设置单元格自定义类ShareImageCollectionCell并设置图像视图出口。
添加左右导航栏按钮,即: 取消+ 。 现在,设置代表和数据源。 ShareViewController文件如下所示

并在扩展目标ImageShare中执行相同的操作。

另外,对于扩展中的开放应用程序,我们需要配置URL方案。
转到ImagePicker,即托管应用程序目标。 打开信息部分,并在底部添加url方案

现在,您将在ShareViewController类中看到方法redirectToHostApp() 。 此方法从扩展名重定向到主机应用程序。 在该动态迭代的响应者链中,一旦应用获得UIApplication Object,它将调用URL选择器。

self.extensionContext!.completeRequest(returningItems:[],completeHandler:无)

这将完成扩展程序,因此一旦打开您的应用程序,扩展程序将被关闭。

在您的应用程序委托中,您必须添加openURL委托。

您将看到ImageShare选项可用,这是我们的扩展名。 点击它。

这将打开ShareViewController。 单击“取消”后,将关闭并移回“照片”。 在单击下一步时,将打开主机应用程序。

那就是我们的主机应用程序。

你好!!! 您已成功将照片从“照片”传输到您的应用程序,而无需直接打开应用程序。

其他 :如果要添加限制从“照片”中选择多少张照片,则更新扩展程序的info.plist

NSExtensionActivationSupportsImageWithMaxCount设置所需的值。

您可以从这里下载项目。