以编程方式检测 SwiftUI 中的暗模式以显示适当的图像
Programmatically detect dark mode in SwiftUI to display appropriate Image
在Assets.xcassets
中,可以添加额外的图像,这些图像会根据外观自动切换。这适用于静态图像,但我正在尝试弄清楚如何对下载的图像执行此操作。
有没有办法在 init 上设置 Image
的深色模式版本,或者 SwiftUI 中是否有一个函数可以让您检测当前外观是否为深色,以便不同的图像 URL可以送达吗?
有一个 @Environment
变量。
@Environment (\.colorScheme) var colorScheme:ColorScheme
以下是我如何使用它来填充一个空的矩形:
Rectangle().fill(Color.fillColor(for: colorScheme))
您可以在任何视图中使用 @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")
}
}
如何检测深色模式
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
在Assets.xcassets
中,可以添加额外的图像,这些图像会根据外观自动切换。这适用于静态图像,但我正在尝试弄清楚如何对下载的图像执行此操作。
有没有办法在 init 上设置 Image
的深色模式版本,或者 SwiftUI 中是否有一个函数可以让您检测当前外观是否为深色,以便不同的图像 URL可以送达吗?
有一个 @Environment
变量。
@Environment (\.colorScheme) var colorScheme:ColorScheme
以下是我如何使用它来填充一个空的矩形:
Rectangle().fill(Color.fillColor(for: colorScheme))
您可以在任何视图中使用 @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")
}
}
如何检测深色模式
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