在SwiftUI中以编程方式检测暗模式以显示适当的图像

时间:2019-07-30 20:39:30

标签: ios swift swiftui ios-darkmode

Assets.xcassets中,可以添加其他图像,这些图像将根据外观自动切换。这对于静态图像效果很好,但是我试图弄清楚如何对下载的图像执行此操作。

Image Set

有没有办法在初始化中设置Image的暗模式版本,还是SwiftUI中有一个函数可以让您检测当前外观是否暗,以便可以使用其他图像URL。服务?

2 个答案:

答案 0 :(得分:17)

您可以在任何视图中使用public class ParameterizedTests: IClassFixture<TFixture> { public ParameterizedTests(TFixture fixture) { } public bool IsOddNumber(int number) { return number % 2 != 0; } [Theory] [ClassData(typeof(TestDataGenerator))] public void AllNumbers_AreOdd_WithClassData(int a, int b, int c, int d) { Assert.True(IsOddNumber(a)); Assert.True(IsOddNumber(b)); Assert.True(IsOddNumber(c)); Assert.True(IsOddNumber(d)); } } 来获取设备是处于暗模式(@Environment(\.colorScheme) var colorScheme: ColorScheme)还是处于亮模式(.dark)。使用该信息,您可以有条件地决定使用三元运算符轻松显示哪个图像。

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

.light

答案 1 :(得分:2)

有一个@Environment变量。

@Environment (\.colorScheme) var colorScheme:ColorScheme

这是我用它填充空白矩形的方法:

Rectangle().fill(Color.fillColor(for: colorScheme))