由於專案需求,需要進行日間和夜間模式的切換,經過實踐和網上的資料,大概的實現方式如下:
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...