如何将两个锁屏小组件分组,使其显示在小组件库同一页面?
锁屏小组件同页面分组解决方案
- 用对
WidgetBundle的写法:你之前的WidgetBundleBuilder用法可能有误,正确姿势是创建一个继承自WidgetBundle的结构体,在body里用@WidgetBundleBuilder直接返回多个锁屏小组件,而非把它们打包成单个组件。示例代码:
struct LockScreenWidgetBundle: WidgetBundle { @WidgetBundleBuilder var body: some Widget { SleepTrackWidget() // 你的第一个锁屏小组件 SleepGoalWidget() // 你的第二个锁屏小组件 } }
确保小组件只支持锁屏家族:检查每个小组件的
supportedFamilies,只保留.accessoryCircular、.accessoryRectangular、.accessoryInline这类锁屏专属的组件家族,别混入主屏幕的家族类型,否则分组会混乱。别给不同小组件设相同
kind:每个小组件的kind必须唯一,系统靠这个识别不同的组件实例,重复的kind会导致冲突,反而没法正常分组。清缓存重启:Xcode的缓存有时候会干扰配置生效,试试清理Derived Data,重启Xcode和设备后再重新运行项目。
系统自带的Sleep应用小组件,就是靠WidgetBundle实现同页分组的,另外注意项目里最好只保留一个WidgetBundle,多个bundle会被系统拆分成不同的小组件页面。
内容的提问来源于stack exchange,提问作者K.F
相关产品推荐
相关产品推荐

