iOS暗黑模式適配方案

前言

暗黑模式適配主要是考慮三個部分

  1. 圖片適配
  2. 顏色適配
  3. 封裝基礎(chǔ)組件用來監(jiān)聽暗黑模式的變化

一、圖片適配

  • 使用ImageSet

  • 打開Assets.xcassets

  • 新建一個Image set 選擇右邊欄的Appearances中對應(yīng)的選項適配深色模式。


    image

  • 使用方法:[UIImage imageNamed:@"circle"];

  • 當模式變化時,UIImage會動態(tài)的獲取對應(yīng)模式下的圖片資源

二、顏色適配

  • 使用ColorSet
  • 打開Assets.xcassets
  • 新建一個Color set 選擇右邊欄的Appearances中對應(yīng)的選項適配深色模式。


    image

  • 使用方法:
    self.view.backgroundColor = [UIColor colorNamed:@"testColor"];
  • 同樣當模式發(fā)生變化時,UIColor會動態(tài)的獲取對應(yīng)模式下的顏色

三、封裝基礎(chǔ)組件用來監(jiān)聽暗黑模式的變化

監(jiān)聽暗黑模式的變化主要是封裝系統(tǒng)監(jiān)聽方法,主要分兩種監(jiān)聽,可以根據(jù)實際情況進行選擇使用。

(一)為NSObject對象添加監(jiān)聽回調(diào)
  1. 利用runtime為需要監(jiān)聽模式變化的obj對象添加一個監(jiān)聽模式變化的block回調(diào),回調(diào)參數(shù)返回當前的模式標記
  2. 把該obj對象加入NSHashTable表中弱持有該對象
  3. 提前用runtime替換系統(tǒng)traitCollectionDidChange:方法,在替換的方法中判斷當前暗黑模式是否發(fā)生改變以及當前的模式,然后在NSHashTable表中遍歷每一個保存的obj對象,并且調(diào)用第一步中為之添加的block回調(diào)
  4. obj對象可以在block帶著模式參數(shù)回調(diào)回來后對obj對象進行適配操作,如下:


    image

(二)新建UIColor的分類監(jiān)聽模式的改變
  1. 建一個UIColor的分類,在分類中根據(jù)系統(tǒng)監(jiān)聽回調(diào)colorWithDynamicProvider:方法,進行顏色匹配,如下:


    image

  2. 使用時:


    image

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容