iOS14 Widget开发踩坑(二)修正版-多个小组件

iOS14 Widget开发踩坑(二)修正版-多个小组件

  • 前言
  • 添加多个小组件
      • 情况1.对于已经写好的一个小组件
      • 情况2.对于新建好还没写的小组件
  • Widgets的限制
  • 突破小组件个数限制的方法
  • 参考文献

前言

2020年12月3日
经过进一步的学习 发现了文章中还有很多错误,请酌情观看,,,最新的修改版等我学习确认无误后再发布!

2020年10月3日修正版
在对Widget进行开发了一个月后,解决了几个问题,对本文进行重新编辑以纠正以前的错误和适应最新版本。

本文主要解决如何添加多个小组件的问题和方法。

添加多个小组件

在网上搜索到的文章对于如何创建多个小组件都一笔带过了,例如《[iOS14]WidgetKit开发实战1-初识iOS小部件》中的描述让我这个SwiftUI新手一脸懵逼。

[iOS14]WidgetKit开发实战1-初识iOS小部件
最后经过几次失败的尝试终于得到了正确的打开方式。

情况1.对于已经写好的一个小组件

新建一个Swift文件,将写好的小组件放到新的文件里后,直接将创建时的入口文件的小组件代码直接替换成下面这样。其中的NextWidgetNewWidget 就是你的两个小组件。注意:这个列表里最多放10个小组件,因为WidgetBundleBuilder的参数最多传入10个。

@available(iOS 14.0, macOS 11.0, watchOS 9.0, *)
@available(tvOS, unavailable)
extension WidgetBundleBuilder {public static func buildBlock<C0, C1, C2, C3, C4, C5, C6, C7, C8, C9>(_ c0: C0, _ c1: C1, _ c2: C2, _ c3: C3, _ c4: C4, _ c5: C5, _ c6: C6, _ c7: C7, _ c8: C8, _ c9: C9) -> some Widget where C0 : Widget, C1 : Widget, C2 : Widget, C3 : Widget, C4 : Widget, C5 : Widget, C6 : Widget, C7 : Widget, C8 : Widget, C9 : Widget}

多了会报错:Extra argument in call
注意:放到这个结构体里的Widget如:NextWidget和NewWidget,在编写时要去除@main才能和这个方法兼容。

import SwiftUI
@main
struct Widgets: WidgetBundle {@WidgetBundleBuildervar body: some Widget {NextWidget()NewWidget()}
}

情况2.对于新建好还没写的小组件

就可以直接将创建时的入口文件中的小组件代码替换成上面这样,再在新的文件里写小组件。

Widgets的限制

1.上面提到的,最多只能有10个小组件,一个小组件有3种尺寸,共计30个。

2.使用到小组件的代码都必须是标准的SwiftUI或者调用Swift的方法,我试图使用Swift或OC创建界面后应用到小组件都失败了,但是可以使用MVC的模式将View封装到新的Swift文件里,暴露接口即可。

3.注意:在小组件中使用了主项目创建的文件时,必须在该文件的Target Membership中勾选上小组件的Target

突破小组件个数限制的方法

import SwiftUI
@main
struct Widgets: WidgetBundle {@WidgetBundleBuildervar body: some Widget {Widget0()Widget1()Widget2()Widget3()Widget4()Widget5()Widget6()Widget7()Widget8()Widgets2().body}
}struct Widgets2: WidgetBundle {@WidgetBundleBuildervar body: some Widget {Widget9()Widget10()Widget11()Widget12()Widget13()Widget14()Widget15()Widget16()Widget17()Widget18()}
}

使用WidgetBundle的叠加进行就可以突破一个方法内只有10个参数的方法。
Widgets2().body会被当成一个Widget参数。

参考文献

本人新手,如果有写错的地方欢迎指正,期待和大家一起交流开发。

《iOS14 Widget开发踩坑(一)修正版-初识别与刷新》
《iOS14WidgetKit开发实战1-4》

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/47055.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

IOS小组件(1):概述

IOS小组件(1):概述 引言小组件是什么?小组件概述小组件开发备注小组件实现原理结语引言 本系列文章作者是安卓开发,以安卓开发的视角学习IOS小组件,记录一下踩坑记录,如有讲得不对的地方,路过大佬多包涵。如果你是想深入学习小组件,建议您顺着笔者的编号顺序阅读本系列…

ios中在app应用内刷新小组件数据

需求&#xff1a; 我们需要在app应用内刷新时间线&#xff0c;让桌面小组件加载最新的内容。即app内修改了共享数据后&#xff0c;需要通知桌面小组件强制刷新&#xff0c;显示改变后的内容。 当某种情况影响到小组件的当前时间线时&#xff0c;您的 App 可以指示 WidgetKit …

android 仿苹果 小组件,仿ios14桌面小部件

仿ios14桌面小部件&#xff0c;这是一款面向广大安卓手机用户推出的高仿iOS14桌面插件软件&#xff0c;大家可以使用这款软件快速完成自己想要的桌面显示&#xff0c;多种插件一键点击轻松完成设置过程&#xff0c;让大家体验到同款iOS14桌面强大的功能&#xff0c;非常有意思的…

iOS14 小组件 开发1

前言:小组件的开发和我们正常情况开发App的逻辑是一样的,正常情况分为:网络请求,数据模型,view,渲染.只不过是小组件的开发使用了 swiftUI 语言来编写,所以要对SwiftUI的空间有所了解. 好!那我们接下来开始我们的小组件开发吧. 首先,创建Widget Extension 然后选择证书,起个名…

Android-为应用添加widget小组件

最近在实现为应用程序添加小组件的功能&#xff0c;记录一下开发过程。 1.添加一个小组件模板 设置组件类名称&#xff0c;其他属性按需求设置&#xff0c;这些属性在生成的文件中也可修改 ​​​​​​ 工程main目录下会生成类文件&#xff0c;res目录下生成资源文件&#x…

iOS 15 新增多个实用小组件

iOS 14 上线加入的桌面小组件功能非常受欢迎&#xff0c;因此苹果iOS 15新系统对小组件功能进行深度优化&#xff0c;并加入了多个实用又有趣的小组件。用户可以简单通过上下滑动来选择、重新排列、智能堆栈小组件&#xff0c;也可以对它们进行删除、智能旋转&#xff0c;还可以…

Widget小组件

目录 技能点 Widget背调 a. 设计定位 b. Widget小组件限制 c. Widget小组件 开发须知 d. 什么是 SwiftUI App Group 数据共享 a. 配置 App Groups 1、开发者账号配置&#xff0c;并更新pp证书 2、Xcode配置 b. 缓存数据共享-代码实现 1、文件存储 2. 沙盒存储&…

iOS_小组件widget基本功能

创建 在当前工程里新建target 选择Today Extension 独立应用 widget虽做为应用的扩展, 但却是两个完全独立的应用 widget上线需要单独申请 AppID 和 Bundle Identifier , 需要配置 证书 和 Provisioning Profiles(配置文件) 第三方pod导入, 也的重新导入一份 target MMWidg…

iOS 14-Widget小组件2—实现

Widget 实现 认识与配置实现效果图支持显示方式交互数据共享刷新策略网络加载屏幕适配支持多个小部件布局例子源码其他问题参考认识与配置 上一篇文章已经做了比较详细的介绍与创建配置iOS 14-Widget小组件1—初识 实现效果图 支持显示方式 @main 入口添加.supportedFamilie…

自定义开发苹果手机显示汽车小组件

实时获取汽车数据信息实时获取汽车定位信息&#xff08;点击地址进入高德&#xff09;显示当前位置的天气情况可定制显示当前城市是否限行可定制当前城市油价信息实时刷新最新数据 感兴趣的可以私聊加群

iOS 小组件 widget

苹果官网文档&#xff08;apple developer&#xff09;widgetkit 文章目录 1.创建小组件2.编辑小组件3.数据共享4.拖动排序5.参考链接 1.创建小组件 File -> New -> Target 搜索widget,点击next 勾上Include Configuration Intent, 表示需要编辑小组件&#xff0c;点击f…

iOS 小组件 widget 编辑小组件

返回小组件专栏&#xff1a;iOS 小组件 widget 文章目录 1.编辑小组件2.intentHandler 1.编辑小组件 如下图&#xff0c;编辑小组件&#xff0c;需要在GirlWidget.intentdefinition中配置 点击右下角的加号&#xff0c;新建一个枚举类型 枚举类型改名MyEnum,并添加三个值 …

iOS 小组件开发

iOS14之后Apple引入了新的WidgetKit&#xff0c;舍弃了原有额TodayExtension。 开发准备&#xff1a; 新的WidgetExtension只能通过SwiftUI进行开发&#xff1b; Widget有三种尺寸&#xff1a;systemSmall、 systemMedium、systemLarge&#xff0c;三种尺寸对应固定的UI类型布…

iOS 小组件 widget group id, app group, 数据共享

返回小组件专栏&#xff1a;iOS 小组件 widget 主APP, 小组件&#xff0c; 小组件的intent是三个独立的target, 需要有三个bundle id和对应的配置文件。而且他们的bundle identifier是从属关系。小组件的bundle id必须以主app的bundle id作为前缀。比如主app的为“com.test”&a…

演讲实录:指标平台+AI 的技术落地和未来展望

7月14日&#xff0c;以“释放数智生产力”为主题的 Kyligence 用户大会在上海成功举行。大会现场发布了 Kyligence 最新产品家族&#xff1a;AI 数智助理——Kyligence Copilot 的预览版、一站式指标平台 Kyligence Zen 的 Cloud 和 Enterprise 版本&#xff0c;以及企业级 OLA…

程序员坐行李箱迎寒风编码 2 小时,目击者:激励我写了一篇论文!

整理 | 朱珂欣 出品 | CSDN程序人生&#xff08;ID&#xff1a;coder_life&#xff09; 对于很多程序员而言&#xff0c;工作三连无疑就是——“查 bug、改 bug 、写 bug ”。 程序员加班的话题&#xff0c;也早已经不足为奇&#xff0c;实际上除了办公室&#xff0c;地铁站…

解决Windows update medic service服务禁用不了拒绝访问

很多小伙伴发现禁用Windows update服务后没几天又自动开启&#xff0c;无法禁用自动更新就是因为Windows update medic service服务导致&#xff0c;但是在禁用Windows update medic service服务的时候又出现拒绝访问&#xff0c;如下 解决方法&#xff1a; 方法一&#xff1…

Windows10禁止更新中关于Windows Update Medic Service拒绝访问的问题

1.首先以管理员身份运行cmd输入 REG add "HKLM\SYSTEM\CurrentControlSet\Services\WaaSMedicSvc" /v "Start" /t REG_DWORD /d "4" /f 这一步已经将Windows Update Medic Service禁用了&#xff0c;但是还能恢复 2.运行“regedit”&#xff0…

windows任务计划程序拒绝访问

问题现象&#xff1a;在windows任务计划程序中添加脚本程序&#xff0c;执行相应脚本&#xff0c;报了拒绝访问和创建目录需要输入参数问题 问题分析&#xff1a;没有权限执行脚本 问题解决&#xff1a;除了填写相应位置的脚本之外&#xff0c;还需要填写起始于的脚本所在路径…

windowsupdate拒绝访问怎么解决?

很多的小伙伴在开机电脑的时候都遇到过提示windowsupdate拒绝访问那么该怎么办呢&#xff1f;下面小编就为你们带来了windowsupdate拒绝访问解决方法&#xff0c;快来一起看看吧。 windowsupdate拒绝访问怎么解决&#xff1f; 1、右击左下角开始点击“运行”。 2、随后在输入栏…