因此,问题是我对背景颜色进行了全局更改。我提出的代码,其通过在UserDefaults密钥保存的背景颜色的按钮,然后我插入view.backgroundColor
在viewDidLoad
主画面的,但它改变颜色只在该屏幕上。如何在全球范围内更改?
为此创建一个子类,UIViewController
该子类具有用于背景色更改的通知观察器,并使您的视图控制器成为其子类。之后,在didSet
用户defaults变量的块中放置一个通知帖子。
class CustomBgColorViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = UserPrefs.customBgColor
NotificationCenter.default.addObserver(self, selector: #selector(shouldChangeBgColor), name: .shouldChangeBgColor, object: nil)
}
@objc fileprivate func shouldChangeBgColor() {
view.backgroundColor = UserPrefs.customBgColor
}
}
extension Notification.Name {
static let shouldChangeBgColor = Notification.Name(rawValue: "shouldChangeBgColor")
}
struct UserPrefs {
static var customBgColor: UIColor! {
didSet {
[...]
NotificationCenter.default.post(name: .shouldChangeBgColor, object: nil)
}
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句