iOS14终于发布了,这次iOS对桌面进行了大刀阔斧的改革,其中一个重大变化就是提供了WidgetKit,允许用户开发桌面组件。
经过一周的学习和实(cǎi)践(kēng),我们开发了一个简单的Widget演示程序,可以从免费API上抓取网易新闻列表并显示在Widget上。当用户点击列表中的新闻时,打开主APP并显示新闻的内容。
Widget的界面如下图所示,不同尺寸的Widget下有不同的布局。
界面预览
简单说两句踩的坑:
1. Widget从机制上不允许频繁更新,即使把timeline设置成1分钟1次更新,系统也不会执行的。经实测,更新的频度上限大致为5分钟一次。结论:Widget不适合显示实时性很强的内容。
2. Widget上不允许显示滚动列表(List)。估计是因为上下滑动的手势会与“智能叠放”冲突吧。结论:Widget不适合展示过于复杂的内容。
3. Widget上展示的网络图片,一定要在getTimeline() 函数里就下载好,并将其保存到UIImage对象里,EntryView在界面布局里直接显示这个UIImage就可以了。(见例程)
4. 不要指望KingFisher能代你解决图片预下载的问题。如果在布局中使用KFImage的话,有时可以显示图片,有时则显示不出来,很不稳定。而且KingFisher和Alamofire在Xcode12下还有命名冲突的问题。
项目源码地址:iOSWidgetSample 您要是觉得有用就帮给点个星吧🌟🌟!