我正在使用此广告连播为我的应用添加暗模式。 https://github.com/draveness/NightNight
当我再次重新启动应用程序时,它运行良好,但是我想更改应用程序内的主题。因此,我将UISwitch添加到了侧面板中,以便用户可以更改主题。
我为此添加了代码,有些颜色变化不错,但有些颜色不受影响。例如,导航栏的背景颜色变化很好,但标题颜色没有变化。
UISwitch操作:
@IBAction func switchMode(_ sender: UISwitch) {
if sender.isOn {
switcher.isOn = true
NightNight.theme = NightNight.Theme.night
UITabBar.appearance().barTintColor = UIColor(hexString: "#141d27")
UITabBar.appearance().isTranslucent = true
UITabBar.appearance().tintColor = UIColor(hexString: "#6e00ff")
UINavigationBar.appearance().tintColor = UIColor(hexString: "#6e00ff")
UINavigationBar.appearance().isTranslucent = true
UINavigationBar.appearance().barTintColor = UIColor(hexString: "#141d27")
for window in UIApplication.shared.windows {
for view in window.subviews {
view.removeFromSuperview()
window.addSubview(view)
}
}
UserDefaults.standard.set("night", forKey: "colormode")
} else {
switcher.isOn = false
NightNight.theme = NightNight.Theme.normal
UITabBar.appearance().barTintColor = UIColor.white
UITabBar.appearance().isTranslucent = true
UITabBar.appearance().tintColor = UIColor(hexString: "#6e00ff")
UINavigationBar.appearance().tintColor = UIColor(hexString: "#6e00ff")
UINavigationBar.appearance().isTranslucent = true
UINavigationBar.appearance().barTintColor = UIColor.white
for window in UIApplication.shared.windows {
for view in window.subviews {
view.removeFromSuperview()
window.addSubview(view)
}
}
UserDefaults.standard.set("normal", forKey: "colormode")
}
}
通常在浅色模式下,灰色文本颜色(用户的名称和导航标题)必须为黑色,但它们不会改变。
答案 0 :(得分:1)
当 view mode
改变时使用回调。
按预期更改颜色。
override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) {
// do whatever you want to do
}
答案 1 :(得分:0)
签出RxSwift和RxCocoa。它们都可以在here中找到。它们是Swift中的反应式编程的反应式框架。您可以根据需要创建可观察对象以被动地更改视图的颜色。