ActivityKit|通过 activityBackgroundTint 设置实时活动卡片背景色调

修改实时活动锁屏卡片的背景,有两种方式:

  • .activityBackgroundTint()
  • .containerBackground(for: .widget)

使用 activityBackgroundTint 设置背景色调

设置 Liquid Glass 玻璃效果()

如果要设置 iOS 26 系统默认的液态玻璃效果,只需添加 .activityBackgroundTint(.clear) 即可。

如果不添加这个修饰器并指定 .clear,默认会显示为偏蓝色的背景色,原因未知:

建议在子组件内部设置,例如 PickupActivityLockScreenView 组件内部最外层的 VStack 上设置,在这里统一设置 .activityBackgroundTint(.clear).background,更加统一。

下面这个 Reddit 帖子中也有讨论这个修饰器:

Liquid Glass live activity widget. How?
by u/Nilsolivier in SwiftUI

色调的限制

需要特别注意,.activityBackgroundTint 修饰器只会设置“色调”而非“背景色”

上面这个截图是分别将 activityBackgroundTint 设置为 .blue.black.white 的效果。注意,他们无法创建纯黑色或纯白色的背景效果,只是给背景添加一层色调。

使用 containerBackground 设置背景色

经过测试,下面这个方法在 iOS 26 上不生效,原因未知。

使用 containerBackground 可以直接设置背景颜色 —— 但注意: .clear无法创建液态玻璃效果。

直接在 View 视图设置背景色

经过测试,直接在 LiveActivity 的对应视图上最外层添加 .background 即可设置背景色。

例如,在 PickupActivityLockScreenView 锁屏实时活动 UI 上设置:

常见问题

Xcode Preview 不生效

截止 Xcode 26.2 (17C52) 版本,activityBackgroundTint 在 Xcode Preview 中似乎不生效,他们会始终显示为primary 颜色,但在真实设备上有效