0

我在 iOS 14.2 上运行的 MacOS 11.01 上的 Xcode 12.2 中有一个 SwiftUI 5.3 多平台应用程序,该应用程序使用自定义颜色资产进行亮/暗模式。启动应用程序时,它可以在明暗模式之间完美切换。所有的颜色都会相应地改变。

但是,在暗模式下,如果我将应用程序移到后台并将另一个应用程序带到前台,然后返回到我的应用程序(从后台恢复),TabView 颜色会完全消失。顶部的 NavigationView 正常运行,正如预期的那样。如果我随后切换到灯光模式,则会为 TabView 显示正确的灯光模式颜色。切换回暗模式会恢复正确的暗模式 TabView 颜色。如果我再次将应用程序移到后台,查看另一个应用程序,然后将我的应用程序带回前台,TabView 颜色再次被洗掉。

我已经尝试过无数次使用initand调用颜色的方法.onAppear,但没有任何东西可以纠正这种行为。

有什么想法吗?感谢您花时间帮我解决这个问题。

编辑以增加清晰度。此处添加代码:

import SwiftUI

struct TabbedView: View {
    
    init() {
        UINavigationBar.appearance().titleTextAttributes = [NSMutableAttributedString.Key.foregroundColor:UIColor(named: "mainTextColor") as Any]
        UINavigationBar.appearance().barTintColor = UIColor(named: "barBackground")
        UINavigationBar.appearance().tintColor = UIColor(named: "mainTextColor")
        UITabBar.appearance().isOpaque = true
        UITabBar.appearance().unselectedItemTintColor = UIColor(named: "unselectedTabColor")
        UITabBar.appearance().barTintColor = UIColor(named: "barBackground")
    }
    
    var body: some View {
        
        TabView {
            
            ContentView()
                .tabItem {
                    VStack {
                        Image("Topics69x69")
                        Text("Topics")
                    }
            }.tag(0)
            
            ChangesView()
                .tabItem {
                    VStack {
                        Image("Changes69x69")
                        Text("Changes")
                    }
            }.tag(1)
            
            GospelView()
                .tabItem {
                    VStack {
                        Image("Gospel69x69")
                        Text("Gospel")  
                    }
            }.tag(2)
            
            CopyrightView()
                .tabItem {
                    VStack {
                        Image("Copyright75x75")
                        Text("Copyright")
                    }
            }.tag(3)
            
            AboutView()
                .tabItem {
                    VStack {
                        Image("About75x75")
                        Text("About")
                    }
            }.tag(4)
            
        } // TabView

        // Sets color of the selected tab on the TabBar
        .accentColor(Color("tabImageTintColor"))
        
    } // View
    
} // Main View
4

0 回答 0