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結束預覽模式 大批增強現實應用即將湧現