【发布时间】:2020-10-31 15:08:55
【问题描述】:
我想知道你们中是否有人知道 SwiftUI 中的系统可以在外观从 light 模式更改为 dark 模式时更新小部件,反之亦然。
我可以更改文本和图像,但我使用一种方法来显示地图的屏幕截图,并且每次外观更改时我都应该运行它以获得正确的地图颜色。
【问题讨论】:
标签: swift swiftui ios14 widgetkit
我想知道你们中是否有人知道 SwiftUI 中的系统可以在外观从 light 模式更改为 dark 模式时更新小部件,反之亦然。
我可以更改文本和图像,但我使用一种方法来显示地图的屏幕截图,并且每次外观更改时我都应该运行它以获得正确的地图颜色。
【问题讨论】:
标签: swift swiftui ios14 widgetkit
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)
}
}
@Environment(\.colorScheme) 对主题更改做出反应:struct WidgetEntryView: View {
@Environment(\.colorScheme) var colorScheme
var entry: Provider.Entry
var body: some View {
if let screenshot = entry.mapScreenshots[colorScheme] {
screenshot
}
}
}
【讨论】: