iOS

您所在的位置:网站首页 小组件包 iOS

iOS

2023-03-16 12:19| 来源: 网络整理| 查看: 265

0 分享至

用微信扫码二维码

分享至好友和朋友圈

iOS14后,我们开到了五花八门的小组件,很多人搞出了各种花哨的自定义页面。我们可以这么做是因为苹果引入了新的UI组件:WidgetKit而舍弃了iOS14以下版本的Today Extension组件。我们今天来学习一下新的小组件。

一:开发前的一些说明

WidgetExtension 使用的是新的WidgetKit,只能使用SwiftUI进行开发,所以需要SwiftUI和Swift基础(SwiftUI后面有时间会进行讲解)。

小组件只有三种尺寸:只支持3种尺寸systemSmall(2x2)、systemMedium(4x2)、systemLarge(4x4)。

需要在项目中进行 App Groups 的设置才能使其与主程序互通数据。

二:实现

1.创建Widget Extension

主程序添加小组件需要File->New->Target然后选择Widget Extension。这里有一个选项Include Configuration Intent,如果需要支持用户自定义配置属性,就需要勾选这个选项(如:用户可以选择城市、图片等),不支持的话就不用勾选。

2.解读代码

添加好小组件的target后,系统会默认生成一个实例代码,我们先来看看这个例子里的内容,方便接下来的学习。

Provider

这是一个继承自TimelineProvider协议的结构体,我们来看看其中的一些方法。

placeholder方法的作用是提供一个默认的视图,当网络数据请求失败或者出现一些异常状况的时候,展示相应视图。getSnapshot方法是为了在小部件库中显示小部件,WidgetKit要求开发者提供预览快照,在组件的添加页面可以看到显示效果。getTimeline方法中可以进行网络请求,拿到的数据保存在对应的entry中,调用completion之后会去刷新小组件。请求时间线有两个地方:一个是按照策略请求,一个在请求即时快照时。刷新小组件并不能重新获取展示数据,只有重启时间线,才能重新获取数据。

根据官方文档说明的重启策略,每个配置的小部件每天接收的重启次数是有限的。而应用程序是在前台还是后台运行、小部件在屏幕上显示的频率,以及应用程序参与的活动类型等都会影响小部件接收的重启次数。我们看到系统生成的代码是5分钟,而其实设定在5分钟以下的重启时间线策略也几乎无效。一般设定在15分钟以上的策略,才能按时重启时间线。

策略有如下几种:在结束时重启​(atEnd)、从不重启(never)、在某一时间点后重启(after(_ date: Date))

SimpleEntry

实现TimelineEntry协议,是用来保存所需要的数据。其中TimelineEntry含有date属性。当然也可以继续添加其他的属性。例如自定义一个展示用的model。

加载入口WidgetConfiguration

StaticConfiguration是系统提供的组件配置结构体,用来对静态类型的组件提供配置,初始化配置代码。kind是Widget的唯一标识。configurationDisplayName是添加编辑界面展示的标题。description是添加编辑界面展示的描述内容。supportedFamilies这里可以限制要提供三个样式中的哪几个,一个Widget只提供了三个样式的选择:大、中、小。

现在对于小组件我们有了初步的认识,想要进行自定义的开发就需要了解更多,下一章我们会讲到与主App的交互等内容。逐步实现我们需要的小组件。

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

/阅读下一篇/ 返回网易首页 下载网易新闻客户端


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3