【发布时间】:2021-12-14 09:38:25
【问题描述】:
我想允许用户更改整个 App-Color。 但是每当我选择一种颜色时,它只会在应用程序重新启动后才会更改。
是否有任何选项可以在运行时更改颜色?
我已经设置了一个Button,具有这样的功能来创建一个ColorPicker
@IBAction func colorChange(_ sender: UIButton) {
// Initializing Color Picker
let picker = UIColorPickerViewController()
// Setting the Initial Color of the Picker
picker.selectedColor = UIColor(named: "MyGreen")!
// Setting Delegate
picker.delegate = self
// Presenting the Color Picker
self.present(picker, animated: true, completion: nil)
}
当用户选择一种颜色时,我会在这个函数中进行更改
func colorPickerViewControllerDidFinish(_ viewController: UIColorPickerViewController) {
defaults.set(viewController.selectedColor, forKey: "myColor")
UITabBar.appearance().tintColor = viewController.selectedColor
}
为了在启动时更改颜色,我在 AppDelegate 中实现了这一点
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
var myColor = defaults.color(forKey: "myColor")
if myColor == nil {
myColor = UIColor(named: "MyGreen")
}
UITabBar.appearance().tintColor = myColor
return true
}
【问题讨论】:
-
这里引用了苹果文档“iOS 在视图进入窗口时应用外观更改,它不会更改已经在窗口中的视图的外观。要更改视图的外观当前在一个窗口中,从视图层次结构中删除该视图,然后将其放回原处。”希望这会帮助你链接:developer.apple.com/documentation/uikit/uiappearance
-
感谢您来自 Apple Doc 的信息,不幸的是,我没有足够的经验来删除视图然后将其放回原处。你能给我一些代码吗? (如果这有帮助,我正在使用故事板)
标签: swift uitabbar color-picker