SwiftUI - после перемещения приложения в фоновый режим и последующего восстановления на передний план TabView теряет цвет

У меня есть многоплатформенное приложение SwiftUI 5.3 в Xcode 12.2 на MacOS 11.01, работающее на iOS 14.2, которое использует настраиваемый цветовой ресурс для светлого / темного режимов. При запуске приложение отлично работает, переключаясь между светлым и темным режимами. Соответственно меняются все цвета.

Однако в темном режиме, если я перемещаю приложение в фоновый режим и выношу другое приложение на передний план, а затем возвращаюсь в свое приложение (восстановление из фонового режима), цвет TabView полностью стирается. NavigationView наверху работает нормально, как и ожидалось. Если я затем переключусь в режим освещения, для TabView появится правильный цвет режима освещения. При переключении обратно в темный режим восстанавливаются правильные цвета TabView в темном режиме. Если я снова переведу приложение в фоновый режим, посмотрю на другое приложение, а затем верну свое приложение на передний план, цвет TabView снова станет размытым.

Я пробовал бесчисленное количество вещей с цветными вызовами, используя init и .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

0 ответов

Другие вопросы по тегам