思路:
一:
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圖的名稱