iOS14系统提供了一个新的功能,可以使用WidgetKit和SwiftUI开发新的小组件,它有多种尺寸,可以放在屏幕上的任何位置,来快速浏览应用的重要信息。
![](https://img.haomeiwen.com/i2113501/77d9e67332254ac6.png)
如何创建Widget
1、首先我们需要添加Widget Target到项目中。
![](https://img.haomeiwen.com/i2113501/f63cd1f52979f27e.png)
2、添加配置详细信息
Widget有两种配置,StaticConfiguration和IntentConfiguration。前者是代表没有用户可配置属性,后者代表用户可配置属性。意思就是使用后者的话,用户可以配置选择对应参数来展示需要的组件内容。如果创建Widget Extension时选中Include Configuration Intent的话,Xcode会自动帮我们创建对应的配置文件。
![](https://img.haomeiwen.com/i2113501/dc04c9da956958e9.png)
接下来我们来看一下Widget的文件结构
1、Provider
这个结构体主要用于提供数据和控制数据的刷新,总共有三个函数。
func placeholder(in context:Context) ->SimpleEntry
用于展示还未获取到数据时默认的Widget
func getSnapshot(for configuration:ConfigurationIntent, in context:Context, completion:@escaping(SimpleEntry) -> ())
用于展示当Widget被添加时给出的样例
func getTimeline(for configuration:ConfigurationIntent, in context:Context, completion:@escaping(Timeline) -> ())
在这个函数中获取展示数据,并且设置刷新时间
2、SimpleEntry
用于保存Widget内容数据和刷新时间
3、ProjectNameEntryView
布局Widget的View放在这里面
4、struct ProjectName: Widget
Widget的入口,定义了Widget的Kind、Provider、View等
参考Demo:https://github.com/JianBinWu/WidgetDemo
Demo请使用真机测试,模拟器会显示空白页面。https://developer.apple.com/forums/thread/650782
![](https://img.haomeiwen.com/i2113501/dfa346f96df27974.png)
网友评论