背景颜色的整体变化

弗拉迪斯拉夫K.

因此,问题是我对背景颜色进行了全局更改。我提出的代码,其通过在UserDefaults密钥保存的背景颜色的按钮,然后我插入view.backgroundColorviewDidLoad主画面的,但它改变颜色只在该屏幕上。如何在全球范围内更改?

塔玛斯·森格尔

为此创建一个子类,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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章