widget

作者: 丿小七 | 来源:发表于2020-11-30 09:08 被阅读0次

1. 准备条件

  1. 两套证书-一套主项目的,一套widget的

  2. widget的证书注意点:

    1. widge的Bundle ID 是在主项目的bundle id 的基础上加的:主-com.dx.widgetTestMain widget-com.dx.widgetTestMain.widgetTestWidget
    2. widget的app id创建的时候要配置App Groups项,创建app id 后要去创建一个app groups,然后把创建好的App groups 配置到对应的appid里面。
  3. 创建项目:在项目里新建Today Extension 创建一个新的Xcode项目,创建好之后在:创建Xcode->File->New->Target->Widget Extension 创建我们的Widget

  4. 项目配置:NSExtensionPrincipalClass自定义的启动界面用纯代码构建布局

  5. <u>添加URL Schemes 在主app里配置Targets->MCWidegtDemo->Info->Url Types-> 设置url schemes 为TodayWidget </u>

  6. 通过app groups共享数据(IOS8新开放功能,主要用于同-Group下的App共享同一份读写空间),可以用NSUserDefaults和NSFileManager两种方式实现extension和主app之间的数据共享

  7. 创建app groups

  8. <u>在主程序和扩展程序中分别设置打开app group设置group名称。主App跟扩展app的groupName要相同,并且与在开发者网站注册的app groups保持一致。</u>

  9. 数据读取跟保存时必须指明group id

    项目默认是有storyboard的,这里我想使用纯代码,所以把他删除了,删除后我们要配置一下启动界面,在TodayWidget->Info.plist->Extension
删除 NSExtensionMainStoryboard 选项
增加 NSExtensionPrincipalClass,value 为 类的名字 TodayViewController
这个时候你就可以用纯代码构建布局了
  • 如果小部件提供用户可配置的属性,请选中Include Configuration Intent复选框。
  • iOS13上的Widget不支持部件堆叠,通过上下滑动切换。而在14上支持。14还支持在任意主界面上进行Widget页面的编辑。
    除了显示上的区别外,代码的实现上也有不同

iOS13上的Widget默认是根据开发语言的选择上为基础,生成组件。如OC的项目生成OC的Widget组件,Swift的项目生成Swift的Widget组件。而且14上则是默认里Swift和SwiftUI为语言基础进行开发。

<u>在14上使用的是新的WidgetKit框架而非13的Today Extension。UI部分只能够使用SwiftUI来开发,所以需要一定的SwiftUI和Swift基础。</u>

14的Widget需要依赖Xcode12.0版本。

屏幕尺寸 - portrait 小部件-systemSmall 中型部件-systemMedium   大部件-systemLarge
414x896 pt (XR/XsMax/11/11ProMax)   169x169pt   360x169pt   360x379pt
375x812 pt (X/Xs/11 Pro)    155x155 pt  329x155 pt  329x345 pt
414x736 pt (6p/6sp/7p)  159x159 pt  348x159 pt  348x357 pt
375x667 pt (6/6s/7/8)   148x148 pt  321x148 pt  321x324 pt
320x568 pt (5/5s/SE)    141x141 pt  292x141 pt  292x311 pt

链接:widget在IOS14上的开发

demo

未完。。。。

相关文章

网友评论

      本文标题:widget

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