在我的应用程序中,我正在显示一个弹出框,这会导致弹出框后面的所有有色UIImageViews去饱和。我也希望这种行为也适用于UILabels和屏幕上的自定义UIView子类。要实现这一点,我需要观察弹出窗口何时打开以及何时关闭,以便我可以手动更新颜色。
我的第一个方法是观察UIView的tintColor
或tintAdjustmentMode
属性。像这样:
override var tintAdjustmentMode: UIViewTintAdjustmentMode {
didSet {
// This does not get called
}
}
但是,当我在显示弹出窗口时手动检查时,即使self.tintAdjustmentMode
等于true
,这些似乎也不会被调用。
另一种方法是从提供弹出窗口的ViewController手动调用辅助方法(在本例中为CollectionViewController)。问题是,当另一个ViewController(比如封闭的导航控制器)呈现一个弹出窗口时,这不起作用。所以这不是我想要的。
有哪些其他方法可以让我对视图当前视图控制器上显示的弹出窗口作出反应?
答案 0 :(得分:2)
要回答我自己的问题,需要覆盖UIView方法tintColorDidChange
。
override func tintColorDidChange() {
// This gets called
}
Apple参考:https://developer.apple.com/reference/uikit/uiview/1622620-tintcolordidchange