我在 iOS 14.2 上运行的 MacOS 11.01 上的 Xcode 12.2 中有一个 SwiftUI 5.3 多平台应用程序,该应用程序使用自定义颜色资产进行亮/暗模式。启动应用程序时,它可以在明暗模式之间完美切换。所有的颜色都会相应地改变。
但是,在暗模式下,如果我将应用程序移到后台并将另一个应用程序带到前台,然后返回到我的应用程序(从后台恢复),TabView 颜色会完全消失。顶部的 NavigationView 正常运行,正如预期的那样。如果我随后切换到灯光模式,则会为 TabView 显示正确的灯光模式颜色。切换回暗模式会恢复正确的暗模式 TabView 颜色。如果我再次将应用程序移到后台,查看另一个应用程序,然后将我的应用程序带回前台,TabView 颜色再次被洗掉。
我已经尝试过无数次使用init
and调用颜色的方法.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