You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将两个锁屏小组件分组,使其显示在小组件库同一页面?

锁屏小组件同页面分组解决方案
  • 用对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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 22:27:34