Post

iOS tintAdjustmentMode 屬性

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

iOS tintAdjustmentMode 屬性

iOS tintAdjustmentMode 屬性

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

問題修正前後比較

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

左修正前/右修正後

左修正前/右修正後

可以看到左方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
    }
}

extension example

結束!

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

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

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

有任何問題及指教歡迎 與我聯絡

===

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

Buy me a beer

273 Total Views
Last Statistics Date: 2025-01-17 | 235 Views on Medium.
This post is licensed under CC BY 4.0 by the author.