激情六月丁香婷婷|亚洲色图AV二区|丝袜AV日韩AV|久草视频在线分类|伊人九九精品视频|国产精品一级电影|久草视频在线99|在线看的av网址|伊人99精品无码|午夜无码视频在线

iOS開發(fā)高級分享 - 兼容暗模式

發(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ā)布了有關如何使您的應用程序為黑暗模式做好準備的很好的指南。

iOS 13之前的黑暗模式

我們應該做的第一件事就是聲明一個主題類型。它定義了一種可以應用于整個應用程序的樣式,并指定了每個視圖的外觀細節(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中采用黑暗模式

在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ā)布了有關如何使您的應用程序為黑暗模式做好準備的很好的指南。

iOS 13之前的黑暗模式

我們應該做的第一件事就是聲明一個主題類型。它定義了一種可以應用于整個應用程序的樣式,并指定了每個視圖的外觀細節(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中采用黑暗模式

在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上運行的應用程序的暗模式支持。

結(jié)論

在本文中,我們探索了如何通過實現(xiàn)可在包括iOS 13在內(nèi)的所有iOS版本上使用的深色模式來使您的應用看起來更漂亮。我們在此描述的解決方案可以輕松擴展。您可以在Github上找到演示項目的源代碼。

作為一個開發(fā)者,有一個學習的氛圍跟一個交流圈子特別重要,這是一個我的iOS交流群:810733363。微信:18173184023。不管你是小白還是大牛歡迎入駐 ,分享BAT,阿里面試題、面試經(jīng)驗,討論技術, 大家一起交流學習成長!希望幫助開發(fā)者少走彎路。

關注+轉(zhuǎn)發(fā)然后私信回復 “08” 獲取學習資料。

來源:本文為第三方轉(zhuǎn)載,如有侵權請聯(lián)系小編刪除。

!

熱門課程推薦

熱門資訊

請綁定手機號

x

同學您好!

您已成功報名0元試學活動,老師會在第一時間與您取得聯(lián)系,請保持電話暢通!
確定