夜間模式

思路:

一:

1.準(zhǔn)備兩套資源,分別對應(yīng)日間模式和夜間模式。

2.在系統(tǒng)全局保存一個變量(BOOL isNight),根據(jù)用戶的操作改變這個變量的值;

3.把每個需要被改變的view, viewcontroller加入通知中心中監(jiān)聽(NeedTransferToNight和NeedTransferToDay)事件;

4.默認(rèn)為日間模式,isNight = YES.

5. 當(dāng)用戶點擊夜間按鈕時,如果isNight == YES, 講此變量的值置為NO,通知中心發(fā)布NeedTransferToNight通知,所有需要被改變的view和viewcontroller在監(jiān)聽到此事 件時使用夜間資源重新繪制自身。其他view在初始化時如果發(fā)現(xiàn)isNight為YES.則使用夜間資源初始化自身。(反之亦然)

6.運行程序,可以看到夜間模式。

二:

寫一個父類view,使夜間模式需改變的view都繼承于他,父類view暴露出設(shè)置夜間模式相關(guān)參數(shù)的接口,如背景顏色,字體顏色,前景色等


準(zhǔn)備兩套UI圖,相當(dāng)于設(shè)置主題

一般都是準(zhǔn)備兩套UI的,一套UI 只通過改變背景顏色,太難看了;通過通知,切換UI的同時,改變背景顏色。

你可以把夜間模式看成是應(yīng)用另外的一個主題。

可以設(shè)計一個主題管理器(單一實例),所有用到有關(guān)顏色,字體,圖片,都由主題管理器統(tǒng)一管理。

優(yōu)化切換UI圖:

像2倍的高清圖一樣命名,每個圖做兩套????bg_night.png?? bg_white.png,取圖的時候動態(tài)判斷

寫一個工具類方法來判斷是否是夜間模式,從而動態(tài)獲取UI圖的名稱

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 前言 由于項目需要,近段時間開發(fā)的夜間模式功能。主流的方案如下:1、通過切換theme實現(xiàn)2、通過resource...
    三十二蟬閱讀 14,367評論 8 87
  • 成熟的夜間模式 從開始寫DKNightVersion這個框架到現(xiàn)在已經(jīng)將近一年了,目前整個框架的設(shè)計也趨于穩(wěn)定。 ...
    從小荔枝炸清華閱讀 471評論 0 1
  • Hello,大家好,我是Clock。今天要寫的這篇文章主題是關(guān)于夜間模式的實現(xiàn)套路。本來這篇文章是上周要寫的,結(jié)果...
    ec95b5891948閱讀 22,584評論 40 346
  • 流水臺參考 陳列指引的家庭組 進行調(diào)整 坐模地臺更換為比較高的臺子 現(xiàn)在視覺點太低
    Holiday澈閱讀 298評論 0 0
  • 感恩主管部門領(lǐng)導(dǎo)對工作的指導(dǎo)和幫助,給我們提出良好的建議,其實平時大家都在做,但每當(dāng)有領(lǐng)導(dǎo)來檢查才發(fā)現(xiàn)還有許多地方...
    毛先利閱讀 248評論 0 0

友情鏈接更多精彩內(nèi)容