gpt4 book ai didi

swift - 外观更改时更新 WidgetKit

转载 作者:行者123 更新时间:2023-12-02 19:08:59 26 4
gpt4 key购买 nike

我想知道你们中是否有人知道 SwiftUI 中的系统可以在外观从 light 模式更改为 dark 模式时更新 Widget,反之亦然。

我可以更改文本和图像,但我使用一种方法来显示 map 的屏幕截图,我应该在每次外观更改时运行它以获得正确的 map 颜色。

最佳答案

  1. 创建两个屏幕截图(每个主题一个)并将其传递到条目中:
struct SimpleEntry: TimelineEntry {
let date: Date
let mapScreenshots: [ColorScheme: Image]
}
struct Provider: TimelineProvider {
...

func getTimeline(in context: Context, completion: @escaping (Timeline<SimpleEntry>) -> Void) {
let entry = SimpleEntry(
date: Date(),
mapScreenshots: [
// replace with actual map screenshots
.dark: Image(systemName: "plus"),
.light: Image(systemName: "minus"),
]
)
let timeline = Timeline(entries: [entry], policy: .never)
completion(timeline)
}
}
  1. 使用 @Environment(\.colorScheme) 对主题变化作出 react :
struct WidgetEntryView: View {
@Environment(\.colorScheme) var colorScheme

var entry: Provider.Entry

var body: some View {
if let screenshot = entry.mapScreenshots[colorScheme] {
screenshot
}
}
}

关于swift - 外观更改时更新 WidgetKit ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64623159/

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