當前位置:
首頁 > 科技 > iOS 應用中的「夜間模式」怎麼實現?

iOS 應用中的「夜間模式」怎麼實現?

這個問題很多解決方案,要根據你自己的需求去找一個合適的。有一些開源的解決方案,比如:GitHub - Draveness/DKNightVersion: Integrate night mode/theme into your iOS app也有一些可以載入主題的框架,比如專註顏色方面的:GitHub - ViccAlexander/Chameleon: Flat Color Framework for iOS (Obj-C & Swift)恰好我前段時間有給自己的 app 做過一個夜間模式,更準確的說是支持了主題。思路非常的簡單。這裡我只講顏色的問題,圖片的問題大同小異。有幾個核心的原則:1. 所有的顏色都配置化,比如我的主題被定義成這個樣子:{ "statusbar": 0, "colors": { "tint": "#e74c3c", "theme": "#ffffff", "light": "#ecf0f1", "text": "#666666", "darktext": "#95a5a6", "separator": "#dddddd", "placeholder": "#bdc3c7", "red": "#e74c3c", "gray": "#b2b2b2" }}你也可以用 plist 去存,反正要把你界面裡面會出現視覺全都配在文件裡面。2. 你每次去顏色,都去 manager 裡面取,只要是和主題相關的,你就不要出現 magic number。這個 manager 會在單例初始化的時候載入一次你設定的主題,比如 light 或者 night,載入的是上面說的配置文件。NSMutableDictionary*temp = [NSMutableDictionary dictionary];[(NSDictionary *)json[@"colors"] enumerateKeysAndObjectsUsingBlock:^(NSString * _Nonnull key, NSString * _Nonnull obj, BOOL * _Nonnull stop) { temp[key] = [UIColor colorWithHex:obj];}];_colors = [NSDictionary dictionaryWithDictionary:temp];_statusBarStyle = [json[@"statusbar"] integerValue];然後你每次取顏色都是從 manager 的字典裡面去取:+ (UIColor *)colorForKey:(NSString *)key { return [[PINThemeManager manager] colors][key] ?: [UIColor clearColor];}+ (UIColor *)lightColor { return [PINThemeManager colorForKey:@"light"];}+ (UIColor *)textColor { return [PINThemeManager colorForKey:@"text"];}這樣的話,你就能在配置不同的時候,取到不同的顏色。而且之後要擴展也非常方便,你只要增加 key 就可以了。3. 當用戶點擊切換主題的時候,要做幾件事情:A. 把新主題的配置文件名更新一下,ThemeManager reload 一下B. 當前屏幕截圖並把圖片蓋上去,界面刷新主題,然後把圖片 fadeOut,這樣會有一個兩種主題融合交替的一個效果C. 將主題變化的消息通過你擅長的任何一種方法通知到其他的界面,完成全部界面的主題更換其實這是一個非常簡單的思路,只要你之前的開發裡面不是經常寫 magic number,要把主題切換換上去很容易。


點擊展開全文

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 應用寶 的精彩文章:

本來可以五分鐘搞定的iPhone 4S兼容電池更換之旅
申城一市民家中賞鬱金香頭髮眉毛脫落
5.8寸全新iPhone意外曝光
不足1月iPhone7價格大跳水 成史上降價最快iPhone
煙台7成多產婦選擇順產

TAG:應用寶 |

您可能感興趣

用Uber模式來做IC設計服務,如何?
為什麼混合現實將會打破當前的應用商店模式?
iOS12中的智能勿擾模式,你應該學會使用!
「並發編程」Future模式及JDK中的實現
用OPPO、vivo模式」造車「?這家車企的商業盤算是什麼?
iOS 正式版發布 USB限制模式了解一下!
丑又如何?模仿iPhone X又怎樣?小米8依舊會進入搶購模式
在線平台模式的改變怎樣影響從業者?iTunes的商業模式為何不行?
IT謝幕,AI上場?商業模式將怎麼變?
Berry:最「深沉」的夜間模式瀏覽器
Android P正式推送,夜間模式來襲!
起重機應用新增VR模式:用戶可在虛擬空間查看模型
外媒實測iPhone XS:HDR模式和散景調節如今都有了
堅果Pro2S海報在暗示什麼:夜間模式還是大爆炸?
從商業模式出發的AliOS能否實現自動駕駛的彎道超車?
macOS 更新,新增暗夜模式,打通與iOS間的壁壘,更加註重隱私!
我們在射擊遊戲中用的「三連發」模式,現實中是啥樣的?
iPhone夜間模式不給力?屏幕太亮?教你一鍵開啟屏幕濾鏡!
開學模式開啟,如何給你的心情做SPA?
谷歌宣布ARCore結束預覽模式 大批增強現實應用即將湧現