iOS tintAdjustmentMode 属性
Present UIAlertController 时本页上的 Image Assets (Render as template) .tintColor 设定失效问题
问题修正前后比较
ㄧ样不啰唆解释,直接上比较图.

左修正前/右修正后
可以看到左方ICON图在有Present UIAlertController时tintColor颜色设定失效,另外当Present的视窗关闭后就会恢复颜色设定显示正常.
问题修正
首先介绍一下 tintAdjustmentMode 的属性设置,此属性控制了 tintColor 的显示模式,此属性有三个枚举可设定:
-
.Automatic :视图的 tintAdjustmentMode 与包覆的父视图设定一致
-
.Normal : 预设模式 ,正常显示设定的 tintColor
-
.Dimmed :将 tintColor 改为低饱和度、暗淡的颜色(就是灰色啦!)
上述问题不是什么BUG而是系统本身机制即是如此:
在Present UIAlertController时会将本页Root ViewController上View的 tintAdjustmentMode 改为 Dimmed (所以准确来说也不叫颜色设定「失效」,只是 tintAdjustmentMode 模式更改)
但有时我们希望ICON颜色能保持ㄧ致则只需在UIView中tintColorDidChange事件保持tintAdjustmentMode设定ㄧ致:
extension UIButton {
override func tintColorDidChange() {
self.tintAdjustmentMode = .normal //永远保持normal
}
}
extension example
结束!
不是什么大问题,不改也没差,但就是碍眼
其实每一个页面遇到present UIAlertController、action sheet、popover…都会将本页view的tintAdjustmentMode改为灰色,但我在这个页面才发现
查找了一阵子资料才发现跟这个属性有关系,设定之后就解决我的小疑惑.



留言 · Comments
Powered by giscus