当 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
}
在 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
}