發(fā)布時間:2024-02-27 10:35:07 瀏覽量:191次
蘋果今年早些時候宣布在iOS上使用“暗模式”,該模式為用戶提供了選擇系統(tǒng)范圍內(nèi)的淺色或深色外觀的選項。它從iOS 13開始可用。但是,如果您對iOS的采用率不滿意,仍然需要支持舊版本的iOS。在本文中,我們來看看如何介紹適用于所有iOS版本(包括iOS 13)的黑暗模式。
應該指出的是,采用暗模式(或暗主題)并不是一件容易的事,因為乍一看。因此,在繼續(xù)前進之前,需要進行一些準備。在UI代碼中引入一些結(jié)構并定義應用程序范圍的調(diào)色板,字體,UI元素樣式等是有意義的。
我建議您觀看WWDC 上有關在iOS上實現(xiàn)暗模式的話題,并查看文檔以概述此功能以及UIKit中引入的相關更改。NSHipster上還發(fā)布了有關如何使您的應用程序為黑暗模式做好準備的很好的指南。
我們應該做的第一件事就是聲明一個主題類型。它定義了一種可以應用于整個應用程序的樣式,并指定了每個視圖的外觀細節(jié)。該Theme結(jié)構包含一個嵌套的Type枚舉和兩個存儲主題類型和調(diào)色板的屬性:
假設我們在項目中定義了一個調(diào)色板。然后,我們可以創(chuàng)建明暗主題:
接下來,我們將需要一種跟蹤當前應用程序主題并提供訂閱當前主題更改的方法。為此,我們將聲明一個ThemeProvider類,該類將當前主題存儲在中UserDefaults,保留主題觀察者NSHashTable并在當前主題發(fā)生更改時通知它們:
有了上面提到的代碼,我們現(xiàn)在可以更新我們的應用程序并使其在黑暗和明亮模式下都能工作。我們可以從更新所有UI組件開始,例如視圖控制器,單元格,控件等,以符合Themeable協(xié)議并在apply(theme:)方法中更新其外觀。要收聽主題更改,我們應該通過register(observer:)從ThemeProvider類調(diào)用方法來注冊觀察者。可以為視圖控制器完成以下操作:
除此之外,還應該有一個設置屏幕,用戶可以在其中打開和關閉暗模式。使用Gagat庫甚至可以更好地完成此操作,并可以使用兩指平底鍋以交互方式在iOS應用程序中的兩個不同主題之間進行切換。最后,我們應該獲得對iOS 12上運行的應用程序的暗模式支持。
在iOS 13中,Apple提供了系統(tǒng)范圍的暗模式支持?,F(xiàn)在,我們可以在資產(chǎn)目錄中創(chuàng)建顏色和圖像,并為暗模式指定其他外觀。最終,當用戶從“設置”打開暗模式時,可以自動更新應用程序的UI。在某些情況下,您可能想檢測外觀變化并相應地更新UI。這可以通過traitCollectionDidChange(_:)在任何符合UITraitEnvironment協(xié)議的UIKit類中實現(xiàn)方法來實現(xiàn)。考慮到所有這些因素,我們應該在當前解決方案中進行一些調(diào)整。
利用動態(tài)顏色,我們可以定義自適應調(diào)色板和主題:
在ThemeProvider我們之前描述不會在iOS 13.運行我們可以宣布一個新的應用程序很好地工作DefaultThemeProvider類,并讓兩個提供符合ThemeProvider協(xié)議:
接下來,我們需要一種ThemeProvider基于當前iOS版本選擇實現(xiàn)的方法:
實施該功能后,我們應該獲得對iOS 13上運行的應用程序的暗模式支持。
蘋果今年早些時候宣布在iOS上使用“暗模式”,該模式為用戶提供了選擇系統(tǒng)范圍內(nèi)的淺色或深色外觀的選項。它從iOS 13開始可用。但是,如果您對iOS的采用率不滿意,仍然需要支持舊版本的iOS。在本文中,我們來看看如何介紹適用于所有iOS版本(包括iOS 13)的黑暗模式。
應該指出的是,采用暗模式(或暗主題)并不是一件容易的事,因為乍一看。因此,在繼續(xù)前進之前,需要進行一些準備。在UI代碼中引入一些結(jié)構并定義應用程序范圍的調(diào)色板,字體,UI元素樣式等是有意義的。
我建議您觀看WWDC 上有關在iOS上實現(xiàn)暗模式的話題,并查看文檔以概述此功能以及UIKit中引入的相關更改。NSHipster上還發(fā)布了有關如何使您的應用程序為黑暗模式做好準備的很好的指南。
我們應該做的第一件事就是聲明一個主題類型。它定義了一種可以應用于整個應用程序的樣式,并指定了每個視圖的外觀細節(jié)。該Theme結(jié)構包含一個嵌套的Type枚舉和兩個存儲主題類型和調(diào)色板的屬性:
假設我們在項目中定義了一個調(diào)色板。然后,我們可以創(chuàng)建明暗主題:
為了能夠使用當前主題更新我們的UI組件,應該有一個所有這些協(xié)議都遵循的協(xié)議。這可以通過以下Themeable協(xié)議來實現(xiàn):
接下來,我們將需要一種跟蹤當前應用程序主題并提供訂閱當前主題更改的方法。為此,我們將聲明一個ThemeProvider類,該類將當前主題存儲在中UserDefaults,保留主題觀察者NSHashTable并在當前主題發(fā)生更改時通知它們:
有了上面提到的代碼,我們現(xiàn)在可以更新我們的應用程序并使其在黑暗和明亮模式下都能工作。我們可以從更新所有UI組件開始,例如視圖控制器,單元格,控件等,以符合Themeable協(xié)議并在apply(theme:)方法中更新其外觀。要收聽主題更改,我們應該通過register(observer:)從ThemeProvider類調(diào)用方法來注冊觀察者??梢詾橐晥D控制器完成以下操作:
除此之外,還應該有一個設置屏幕,用戶可以在其中打開和關閉暗模式。使用Gagat庫甚至可以更好地完成此操作,并可以使用兩指平底鍋以交互方式在iOS應用程序中的兩個不同主題之間進行切換。最后,我們應該獲得對iOS 12上運行的應用程序的暗模式支持。
在iOS 13中,Apple提供了系統(tǒng)范圍的暗模式支持?,F(xiàn)在,我們可以在資產(chǎn)目錄中創(chuàng)建顏色和圖像,并為暗模式指定其他外觀。最終,當用戶從“設置”打開暗模式時,可以自動更新應用程序的UI。在某些情況下,您可能想檢測外觀變化并相應地更新UI。這可以通過traitCollectionDidChange(_:)在任何符合UITraitEnvironment協(xié)議的UIKit類中實現(xiàn)方法來實現(xiàn)??紤]到所有這些因素,我們應該在當前解決方案中進行一些調(diào)整。
利用動態(tài)顏色,我們可以定義自適應調(diào)色板和主題:
在ThemeProvider我們之前描述不會在iOS 13.運行我們可以宣布一個新的應用程序很好地工作DefaultThemeProvider類,并讓兩個提供符合ThemeProvider協(xié)議:
接下來,我們需要一種ThemeProvider基于當前iOS版本選擇實現(xiàn)的方法:
實施該功能后,我們應該獲得對iOS 13上運行的應用程序的暗模式支持。
在本文中,我們探索了如何通過實現(xiàn)可在包括iOS 13在內(nèi)的所有iOS版本上使用的深色模式來使您的應用看起來更漂亮。我們在此描述的解決方案可以輕松擴展。您可以在Github上找到演示項目的源代碼。
作為一個開發(fā)者,有一個學習的氛圍跟一個交流圈子特別重要,這是一個我的iOS交流群:810733363。微信:18173184023。不管你是小白還是大牛歡迎入駐 ,分享BAT,阿里面試題、面試經(jīng)驗,討論技術, 大家一起交流學習成長!希望幫助開發(fā)者少走彎路。
關注+轉(zhuǎn)發(fā)然后私信回復 “08” 獲取學習資料。
來源:本文為第三方轉(zhuǎn)載,如有侵權請聯(lián)系小編刪除。
!
熱門資訊
1. iPhone6的UI設計尺寸規(guī)范,原來如此重要!
想要了解iPhone6界面設計的尺寸規(guī)范嗎?這里為您詳細介紹iPhone6的UI設計尺寸規(guī)范,包括界面尺寸、圖標尺寸、可點擊高度規(guī)范、搜索欄高度規(guī)范以及界面元素之間的距離規(guī)范。
2. 12個絕佳的UI設計網(wǎng)站,助力你的創(chuàng)作之旅!
將為大家介紹12個絕佳的UI設計網(wǎng)站,這些網(wǎng)站不僅可以為你提供靈感,還可以幫助你學習新的技巧,助力你的創(chuàng)意之旅!dribbbleDribbble 是一個面向設計師的...
3. 移動端UI設計中常見的5種APP界面類型,你get到了嗎?
通過介紹移動端UI設計中的閃屏頁、引導頁、浮層引導頁、空白頁和首頁等5種APP界面類型,幫助大家更好地了解UI設計的基本知識
4. 10個免費學習UI設計的網(wǎng)站 提升你的設計能力
怎樣可以提升你的UI設計能力!第一個:站酷站酷想必是設計師都知道的一個網(wǎng)站,里面不止有UI設計的資源,還有其他設計的,不如:平面設計、網(wǎng)頁設計、字體...
在移動端設計中,列表頁和表單頁是不可或缺的部分。一個好的列表頁和表單頁設計能夠讓用戶輕松地獲取信息并產(chǎn)生點擊欲望,從而提高點擊率。本文將為你...
對于想要提高自己的設計能力和創(chuàng)造力的小白和UI設計師來說,這本書是一個很好的選擇。4.《設計的覺醒》(IKKO TANAKA)推薦理由: 這本書是日本現(xiàn)代平面...
探索零基礎UI設計培訓的時長與薪資前景。了解數(shù)字藝術教育領域的專業(yè)課程,以及培訓后的職業(yè)發(fā)展機會。
8. 設計中的色彩心理學:淺析中西方色彩的歷史演變與設計應用
摘要:本文探討了色彩的歷史演變和設計應用。通過對色彩在早期文明社會中的實用運用、不同文化背景下色彩觀念的差異、色彩在設計中的重要性以及新興技...
9. 物聯(lián)網(wǎng)APP UI設計:創(chuàng)造智能硬件領域的沉浸式體驗
ui設計應該讓用戶一目了然,能夠快速找到所需的信息和功能。在設計過程中,應盡量使用簡潔的圖標、文字和色彩,避免過多的視覺干擾。符合用戶習慣:ui設...
10. 武漢UI設計培訓班費用怎么樣?想學UI設計要多少錢?
想了解武漢UI設計培訓班的費用是多少嗎?不知道學UI設計要花多少錢?不妨看看這篇文章,了解UI設計培訓班的學費價格以及學習內(nèi)容。
最新文章
同學您好!