前言
这篇文章会教你如何全方面无死角构建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 Widgets3.配置一下图片资源。
配置 Notification Icon4.配置一下DisplayName。这里需要注意的选中Extension Targets,配置完运行工程。
DisplayName5.效果图
效果图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这里没有其他的坑了。
网友评论