当 UIViewController 呈现弹出窗口时,与 UIView tintColor 同步更改 CALayer 颜色

Change CALayer color in sync with UIView tintColor when a UIViewController presents a popover

在 iOS 中,当 UIViewController 呈现弹出窗口时,其视图的 tintColor 将更改为 b/w 颜色(这样,当弹出窗口可见时,按钮看起来不可点击)。当弹出窗口消失时,颜色会变回。

有一个 UIView 的子类,它包含徽章计数。此视图层的颜色应该与视图的 tintColor.

颜色相同

如何在其父视图中同步子层的tintColor

// draw orange background layer with border  
override func draw(_ rect: CGRect) {
    layer.cornerRadius = rect.height / 2
    layer.borderColor = UIColor.orange.cgColor
    layer.borderWidth = 2
    layer.backgroundColor = UIColor.white.cgColor
    layer.masksToBounds = true
}

默认:

呈现:

覆盖自定义 UIView 中的 tintColorDidChange 并将 tintColor 设置为其中图层的 backgroundColor

override func tintColorDidChange() {
    layer.backgroundColor = tintColor.cgColor
}