iOS8新特性扩展(Extension)应用之一——Today扩展

一、理解扩展

1、简介

        基于iOS系统的安全性考虑,其应用的数据存储是通过沙盒模式进行的,要实现应用之间的数据共享十分困难,功能共享就更加棘手。在iOS8系统中,apple为我们提供了一个革命性的功能:扩展。我们可以通过扩展来使app间数据甚至功能进行共享。

2、几种扩展模式

(1)今日视图扩展:today

        这个扩展也被叫做 widget。该扩展可以将今日发生的简短消息放到消息中心的「今日」视图里。这个功能类似于安卓系统中的小控件,只是安卓的可以直接放在桌面上,更加自由。示例如下:

iOS8新特性扩展(Extension)应用之一——Today扩展_iOS8

(2)分享功能扩展

        该扩展允许应用向在线服务上传照片、链接或者其他文件。在以前版本中,我们若要实现分享功能,必须进行复杂的操作。

(3)个性操作

        通过这个功能,可以实现两个APP中共享一些内容,例如编辑文字中的图片,翻译网页中的文字。

(4)照片操作

        这个类型的扩展可以允许我们在ipone相机中拍摄的照片使用其他图片编辑软件进行编辑。

 

(5)文件分享

        该扩展可以让软件将文件保存在各种云存储服务商。

(6)自定义键盘

        允许用户使用第三方的键盘输入法。

 

二、ToDay扩展的创建

        扩展是一个独立的构成,和其有关的两个概念是宿主APP和主机APP,宿主APP是扩展存放的地方,与扩展可以实现资源共享,主机APP是扩展运行的程序,例如ToDay扩展有抽屉中的Today应用进行运行。要创建一个ToDay扩展,首先我们需要创建一个宿主APP:

新建一个工程:

iOS8新特性扩展(Extension)应用之一——Today扩展_iOS8新特性_02

选择xcode工具栏中的File->new->target

iOS8新特性扩展(Extension)应用之一——Today扩展_iOS扩展_03

在Application Extension中有上面提到的6中扩展,我们选择Today。

这是我们的项目中会多了一个扩展的文件夹:

iOS8新特性扩展(Extension)应用之一——Today扩展_iOS8新特性_04

这个文件夹中有一个ViewController,我们可以在里面进行布局,还有一个plist文件,可是配置扩展的一些属性。

我们创建一个按钮:

 UIButton * btn = [[UIButton alloc]initWithFrame:CGRectMake(0, 0, 100, 30)];
[btn setTitle:@"231" forState:UIControlStateNormal];
[self.view addSubview:btn];

之后我们运行这个扩展:

iOS8新特性扩展(Extension)应用之一——Today扩展_iOS扩展_05

xcode会让我们选择运行扩展的主机程序,因为这是一个today类型的扩展,我们选择Today:

iOS8新特性扩展(Extension)应用之一——Today扩展_iOS_06

运行后,在系统的通知抽屉中,就会出现我们的这个扩展:

iOS8新特性扩展(Extension)应用之一——Today扩展_iOS8新特性_07

同样,我们可以创建tableView,imageView以及其他复杂的视图效果,我们也可以编写很多逻辑功能,跳转APP等。