Widget简介
从iOS 8开始,引入widget特性。可以在通知中心的Today栏中添加widget。widget可以简单理解为一个小的扩展程序,可以展示相关应用的简略信息,提供快捷访问等功能。
widget的概念在Android中已经十分成熟,iOS widget与自由度相当高的Android widget有显著的区别。iOS widget的刷新时间为展示widget时,而不是像Android widget时刻保持在后台,消耗系统资源。iOS widget只是作为很小的配角存在,Apple的中心思想还是希望开发者关注App本身的设计和性能。
尽管iOS widget是一种约束状态下的自由,但已经逐渐改变用户的交互行为。
创建Widget
1、创建工程;
2、为工程添加新Target,并选择Today Extension模板;
3、改为纯代码创建界面,默认会创建MainInterface.storyboard设计界面。删除Info.plist文件中的字段,并添加NSExtensionPrincipalClass字段,设为对应的TodayViewController;
4、在TodayViewController中创建界面。
点击Widget跳转至主应用
为widget添加跳转至主应用的快捷入口。
为widget添加一层透明UIView,并添加tap手势,当点击widget时,执行下面方法:
1 2 3 4 |
|
其中customScheme可以自定义为需要的名字,字符串整体一定要符合URL格式,否则无法跳转。
主应用响应跳转
tapAction方法发出打开URL请,系统会查找注册过相同scheme的应用,并对其通知。所以主应用要注册相同的scheme,并且实现对通知的响应。
首先,在主应用的Info.plist文件中,添加URL types字段,并最终添加对应的scheme。
然后,在主应用AppDelegate.m中添加如下方法:
1 2 3 4 5 6 7 8 9 10 11 |
|
不同应用间跳转
大致过程与widget跳转至主应用相同,差别在于发送跳转请求的方法不同,如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
一定要保持两者约定的scheme相同。跳转时传递的信息保存在URL中,按约定解析即可。