iOS 開發 日間 夜間模式切換

2022-08-10 14:48:16 字數 1052 閱讀 4351

由於專案需求,需要進行日間和夜間模式的切換,經過實踐和網上的資料,大概的實現方式如下:

1.通常來說日間和夜間模式的切換會出現在設定裡面。在專案中,我使用nsuserdefault來儲存乙個key為mode的值,日間模式值則為day,夜間為night,設定中根據切換的模式來進行鍵值的更新。更新之後,使用nsnotificationcenter發出通知。

2.需要切換模式的viewcontroller中,可以定義乙個isday的bool值。並且需要作為通知的接收器來接收設定中按鈕動作觸發的通知。在處理通知的方法中,根據nsuserdefault中key為mode的值來進行isday的賦值。yes為白天模式,no為夜間模式。如果是tableview的話可以進行reloaddata的操作進行更新,其他view如果需要更新的話使用setneedsdisplay。

4.需要注意的是,這種方法對於uiimageview是不起作用的。所以,我另外新增了一層view,**如下:

1 uiview *nightmodeview =[[uiview alloc] initwithframe:self.view.frame];  

23 nightmodeview.background =[uicolor blackcolor];

45 nightmodelview.alpha = 0.5

; 6

7 nightmodeview.userinteracationenabled =no;

89 [self.view addsubview:nightmodeview];

在夜間模式時新增。在日間模式時removefromsuperview即可。

5.其他viewcontroller在載入的時候。先進行isday的賦值。

1 self.button.background = isday ? [uicolor whitecolor] : [uicolor blackcolor];

思路總結下來就是使用kvo來進行模式的監聽,在各個viewcontroller中自定義乙個值來判斷當前的模式。模式切換時,對各個view進行重新整理。對於的處理,則可以使用第4點

夜 日間模式切換

思路 進行布林值的判斷 夜間模式 獲得應用程式的視窗,在視窗上新增乙個檢視,並設定該檢視的顏色和透明度 日間模式 將該視窗上的檢視從視窗上移除 dayview uiview alloc initwithframe uiscreen mainscreen bounds dayview.backgrou...

切換夜間模式

先需要新建乙個專案,選擇初始的activity時選擇baseactivity。dependencies修改style name colorprimary color colorprimary colorprimarydark color colorprimarydark coloraccent co...

iOS 夜間模式

講解 1.因為夜間模式是所有頁面都要更改,所以將通知的新增與移除放到 baseviewcontroller中 2.每個類有都需要單獨設定自己的夜間情況,所以在 baseviewcontroller中有兩個公共介面 3.因為大部分夜間設定是通用的,所以封裝出 nightmanager類進行統一設定 4...