Home iOS tintAdjustmentMode 屬性
Post
Cancel

iOS tintAdjustmentMode 屬性

iOS tintAdjustmentMode 屬性

Present UIAlertController 時本頁上的 Image Assets (Render as template) .tintColor 設定失效問題

顧小事成大事的第一篇:

2019年新主題,「 顧小事成大事 」意指 完善小細節聚沙成塔成大事 ,如同郭董說的「 魔鬼藏在細節裡 」;主要都是整理 小問題及解決方法 ,另一方面也當筆記紀錄,如果你也有發現一樣的問題希望能幫助到你:)

問題修正前後比較

ㄧ樣不囉唆解釋,直接上比較圖.

左修正前/右修正後

左修正前/右修正後

可以看到左方ICON圖在有Present UIAlertController時tintColor顏色設定失效,另外當Present的視窗關閉後就會恢復顏色設定顯示正常.

問題修正

首先介紹一下 tintAdjustmentMode 的屬性設置,此屬性控制了 tintColor 的顯示模式,此屬性有三個枚舉可設定:

  1. .Automatic :視圖的 tintAdjustmentMode 與包覆的父視圖設定一致
  2. .Normal預設模式 ,正常顯示設定的 tintColor
  3. .Dimmed :將 tintColor 改為低飽和度、暗淡的顏色(就是灰色啦!)

上述問題不是什麼BUG而是系統本身機制即是如此:

在Present UIAlertController時會將本頁Root ViewController上View的 tintAdjustmentMode 改為 Dimmed (所以準確來說也不叫顏色設定「失效」,只是 tintAdjustmentMode 模式更改)

但有時我們希望ICON顏色能保持ㄧ致則只需在UIView中tintColorDidChange事件保持tintAdjustmentMode設定ㄧ致:

1
2
3
4
5
extension UIButton { 
   override func tintColorDidChange() {
        self.tintAdjustmentMode = .normal //永遠保持normal
    }
}

結束!

不是什麼大問題,不改也沒差,但就是礙眼

其實每一個頁面遇到present UIAlertController、action sheet、popover…都會將本頁view的tintAdjustmentMode改為灰色,但我在這個頁面才發現

查找了一陣子資料才發現跟這個屬性有關係,設定之後就解決我的小疑惑.

===

本文首次發表於 Medium ➡️ 前往查看

This post is licensed under CC BY 4.0 by the author.

動手做一支 Apple Watch App 吧!

自己的電話自己辨識(Swift)

Comments powered by Disqus.