gpt4 book ai didi

swift - iOS 14 WidgetKit 检测系统主题更改

转载 作者:行者123 更新时间:2023-12-04 02:31:00 25 4
gpt4 key购买 nike

我在 getTimeline 中使用以编程方式生成的 UIImage 构建我的 WidgetKit 。

所以我需要在 getTimeline 中知道 iOS 主题是浅色还是深色。

我知道如何在带有 traitCollection.userInterfaceStyle == .dark 的 ViewController 中做到这一点,但我如何在 Widget 中做到这一点?

最佳答案

虽然 Widget View 是静态的,但您仍然可以检测到 @Environment(\.colorScheme)

这是一个简单的演示:

struct WidgetEntryView: View {
@Environment(\.colorScheme) var colorScheme

var entry: Provider.Entry

var bgColor: some View {
colorScheme == .dark ? Color.red : Color.orange
}

var body: some View {
ZStack {
bgColor
Text(entry.date, style: .time)
}
}
}

注意当系统配色方案发生变化时:

  • 仅重绘您的 View ,不会再次调用 getTimeline 函数
  • 当系统配色方案改变时,默认颜色会自动改变

这里是 GitHub repository使用不同的 Widget 示例,包括 Environment Widget。

关于swift - iOS 14 WidgetKit 检测系统主题更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64182437/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com