美文网首页
iOS - Today Widgets Extension

iOS - Today Widgets Extension

作者: 我的名字好长好长灬 | 来源:发表于2018-04-27 08:46 被阅读53次

    前言

    这篇文章会教你如何全方面无死角构建Today Widgets。

    听首歌吧,不用着急,听什么呢?

    《蒙娜丽莎的眼泪》吧。

    记录一下此时此刻的心情,今天的心情真的是糟透了。

    What's the matter with your head?-《Come and Get Your Love》

    1.Today Widgets 简单的操作

    1.创建一个Applocation Extension。之前的文章中说到怎么去创建一个App Extension。

    2.选中工程,运行工程。这样一个简单的Today Widgets就创建出来。

    Today Widgets

    3.配置一下图片资源。

    配置 Notification Icon

    4.配置一下DisplayName。这里需要注意的选中Extension Targets,配置完运行工程

    DisplayName

    5.效果图

    效果图

    2.Today Widgets NCWidgetProviding 协议。

    协议一共有两个方法我们可以用。

    func widgetPerformUpdate(completionHandler: (@escaping (NCUpdateResult) -> Void)) 

    func widgetActiveDisplayModeDidChange(_ activeDisplayMode: NCWidgetDisplayMode, withMaximumSize maxSize: CGSize) 

    这两个协议方法,一个是刷新Today Widgets 调用的方法,一个是改变Widgets所调用的Layout方法。

    运行App程序是不会主动调用 Today Widgets Extension方法的。

    运行扩展程序,其调用顺序是viewDidLoad->widget..WithMaximumSize->completionHandler。当我们去运行扩展程序的时候就相当于模拟系统调用。

    前边我们说到completionHandler(NCUpdateResult.newData)这个方法是系统回调。那么这个参数就需要注意一下,NCUpdateResult 枚举,三种状态。

    NCUpdateResultNewData- 新内容需要您重绘视图

    NCUpdateResultNoData- 小部件不需要更新

    NCUpdateResultFailed- 在更新过程中发生错误

    告知系统我这个扩展程序执行结果。

    3.Just try it. 

    通过MainInterface.storyboard配置你的样式。

    配置storyboard

    不需要考虑横屏状态的样式,这个Today横屏和竖屏一样。但是需要注意的是,当你尝试运行你的程序的时候你会发现你的图片不能成功的显示。

    因为我们加载的是Assets.xcassets中的图像,在前面的文章中我们说到,这个扩展程序和应用程序数据不共享的。所以我们需要到Assets.scassets中配置一下,让这个Assets为你的Extension更好的服务。

    配置Assets

    这里没有其他的坑了。


    相关文章

      网友评论

          本文标题:iOS - Today Widgets Extension

          本文链接:https://www.haomeiwen.com/subject/hxqotxtx.html