22

Assets.xcassets中,可以添加其他图像,这些图像将根据外观自动切换。这适用于静态图像,但我正在尝试弄清楚如何为下载的图像执行此操作。

图像集

有没有办法设置Imageon init 的暗模式版本,或者 SwiftUI 中有一个函数可以让您检测当前外观是否是暗的,以便可以提供不同的图像 URL?

4

3 回答 3

50

您可以@Environment(\.colorScheme) var colorScheme: ColorScheme在任何视图中使用来了解设备是处于暗模式 ( .dark) 还是亮模式 ( .light)。使用该信息,您可以有条件地决定使用三元运算符轻松显示哪个图像。

例如,如果您有一个名为“lightImage”的图像用于亮模式,而“darkImage”则用于暗模式:

@Environment(\.colorScheme) var colorScheme: ColorScheme

var body: some View {
    Button(action: {
        foo()
    }) {
        Image(colorScheme == .light ? "lightImage" : "darkImage")
    }
}
于 2019-07-30T21:19:04.893 回答
3

有一个@Environment变数。

@Environment (\.colorScheme) var colorScheme:ColorScheme

以下是我使用它填充空矩形的方法:

Rectangle().fill(Color.fillColor(for: colorScheme))
于 2019-07-30T21:14:46.640 回答
0

如何检测暗模式

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

    var body: some View {
        Text(colorScheme == .dark ? "In dark mode" : "In light mode")
    }
}

资料来源:https ://www.hackingwithswift.com/quick-start/swiftui/how-to-detect-dark-mode

于 2022-01-21T22:36:01.950 回答