手把手教你新手如何构建Widget

官方对widget的解释:App Extension Programming Guide: Today

People view Today widgets in the Today area of Notification Center. Because people configure the Today area so that it displays the information they value most, it works well to approach the design of your widget with the goal of earning a place among the user’s most important items.

extension是iOS8新开放的一种对几个固定系统区域的扩展机制,extension并不是一个独立的app,它有一个包含在app bundle中的独立bundle,extension的bundle后缀名是.appex;需要依赖于containning app。

点击“编辑”可是添加其他app的widget。

那么如何创建widget?

创建一个工程,在该工程里添加targets:

新建过后,项目的样子

运行一下结果是

搭建简单的交互界面

文件配置:

系统生成的info.plist文件默认是使用Storyboard 实现的界面;如果你想使用代码实现是界面的搭建,需更改这个配置文件:




NSExtensionAttributes:这是一个描述扩展点具体属性的字典,就像照片编辑扩展中的PHSupportedMediaTypes一样。

NSExtensionPrincipalClass:这是扩展模板创建的主体视图控制器类,比如TodayViewController。当载体应用程序(host app)调用扩展时,扩展点会实例化这个类。

NSExtensionMainStoryboard(只适用于iOS):扩展默认的Storyboard文件,一般名为MainInterface。

特别提醒,如果你是用的Swift 可能需要在前面加上$(PRODUCT)

纯代码编写


更新widget视图:方法为



运行结果为:

注意这里需要使用这段代码去控制UI30px  否则你会觉得UI和想象中差别很大

UI搭建好了,如何根据UI上的按钮或者别的触发事件进行跳转呢?

首先呢,你需要在你的项目中添加URL Type


然后在点击事件回调到TodayViewController 的时候,通过


此方法进行跳转。那么这么多按钮,如何进行不同的跳转呢,或者不同页面呢,答案在这里


你可以在Appdelegate 中的方法里,根据URL进行跳转,具体跳到哪里,你说了算,哈哈哈哈哈。


iOS 10的适配上你可以


这样处理。

未完待续。。。。Demo地址

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 15,631评论 4 61
  • Swift版本点击这里欢迎加入QQ群交流: 594119878最新更新日期:18-09-17 About A cu...
    ylgwhyh阅读 26,258评论 7 249
  • 今天晚上,我和妈妈一起包馄饨。 妈妈把馄饨的馅弄好,我把桌子收拾好,把面板搬到了桌子上,我就和妈妈一起包馄饨了。 ...
    嘉荣123阅读 276评论 0 1
  • 把肉腌一腌 能保存得更长久一些 于是我用20公斤盐擦遍了她全身 再挂到太阳下晒一晒 嗯 她不会再变老了
    租了五颗星阅读 188评论 0 1
  • 黑暗中迷茫行走的旅人啊! 如果可以 请不要中途停留 也不要蒙上你的眼 我要在目光所及之远 披最后一缕夕阳 等夜风吹...
    我素行阅读 277评论 4 2

友情链接更多精彩内容