首页 > 解决方案 > 从亮模式到暗模式的颜色变化在真实设备上的 SwiftUI 中不起作用

问题描述

使用 Swift5.3.2、iOS14.4.1、Xcode12.4、

在 SwiftUI 中从浅色模式切换到深色模式时,我尝试进行自定义颜色更改。

这是我的代码:

import SwiftUI

struct MyTestView : View {
    
    var body: some View{
        
        VStack {
            Rectangle()
                .foregroundColor(Color("loginBG"))
        }
    }
}

在我的MyTestView应用程序生命周期开始时调用(真正简单的示例):

import SwiftUI

@main
struct myApp: App {
        
    var body: some Scene {
        WindowGroup {
            MyTestView()
        }
    }
}

这是我的颜色定义loginBG

在此处输入图像描述

这是显示矩形不幸没有改变颜色的视频 - 为什么?????

(从状态栏颜色开关你可以看到我确实从浅色模式更改为深色模式并返回。但根本没有矩形颜色变化)

在此处输入图像描述

标签: iosswiftuiios-darkmodelightmode

解决方案


您可以尝试使用以下代码:

import SwiftUI

struct MyTestView : View {
    
    var body: some View{
        
        VStack {
            Rectangle()
                .foregroundColor(Color(UIColor(named: "loginBG")))
        }
    }
}

替换Color("loginBG")Color(UIColor(named: "loginBG"))

这可以在真实设备上为我工作。


推荐阅读