TodayWidget控件 这里说下很久之前项目中用到的技术,略微的研究了下,一直想写篇博文一直没有时间,现在项目处于维护期也就有了空闲时间,反过来再写发现已经有些忘记了,好在当时截了些图下来然后重新捋了一遍,决定把它写下来。 首先说下,这个没有接触的人肯能觉得比较陌生,其实这个控件呢,是大家比较熟悉的东西,这是Apple发布iOS8系统带来的有趣的新特性,这个App Extensions让第三方产品与系统本体的互动变得更为直接。做的比较好的个人认为是格瓦拉电影,在你屏幕的下拉在单里,看下图。 FA4C54D0-1C9F-4F1A-BF84-30BB66266CA7.png 这种功能其实很耗费性能,不要将一些大的功能放在这里,这里只是一个警示作用,起画龙点睛之笔的功能! 好了废话就不多说了,现在开始进入主题! 创建这个功能,你需要有一个主APP就像它的类别一样App Extensions,然后在工程总创建一个新的文件!EDF2603D-7B6A-4A43-BEF8-4B5C6A16E147.png 创建完这个项目里就多了一个target,对这个target进行设置1,删掉NSExtensionMainStoryboard字段 2,添加NSExtensionPrincipalClass字段 并设为TodayViewController(你也可以指定其他的ViewController)DE454E75-301A-45C3-A372-DEB724F6A99B.png 这时候你已经在项目中添加了一个todayWidget ,如果碰到错误推出Xcode 然后重新编译运行即可,这个会弹出提示框选择Today 59ADE2EB-3C08-4866-B905-32575FB3EECD.png

接下来是和主程序之间进行通信,首先在主程序和Wodget中Capabilities 中的 appGroup选择对应的程序BundleiD确保加入组这里两边需保持一致! 屏幕快照 2015-06-09 下午6.35.25.png 屏幕快照 2015-06-09 下午6.36.58.png 这里报红了,不影响写博文,这个是后来截的图当时Appid不一致了! 查看你的.entitlements 下的Entitlements Item0 确保是你需要的BundleiD 这里我的例子是调用其他程序,主程序没有太大效果,其实道理是一样的! 在主程序中有一个Button点击跳转到其他程序,在另一个程序下拉Widget跳回主程序!这里只是为了明显,如果在主程序里跳转看不到效果! 跳转其他程序屏幕快照 2015-06-09 下午8.36.27.png 跳转回主程序! 屏幕快照 2015-06-09 下午8.36.56.png 这里提一下,这里Ui布局和其他程序一样!设置好UrlTypes 屏幕快照 2015-06-09 下午8.34.39.png 其他程序接受跳转 屏幕快照 2015-06-09 下午8.35.42.png 效果