2017-02-16 101 views
0

當前,我正在研究基於文章的應用程序。它具有日/夜閱讀模式功能。應用程序背景顏色在夜間模式下應爲黑色,並且前景部分應爲白色。我已經創建了UIView,UILabel,UIButton和UITextView的類別,但我不知道它是否正確。請給我一些建議。iOS應用程序中的夜間模式

如何在iOS應用程序中實現/實現日/夜模式?

+0

您可以使用此鏈接https://www.raywenderlich.com/108766/uiappearance-tutorial – Sunny

回答

0

我認爲你最好的選擇是使用外觀代理而不是類別。任何小類UIView(基本上任何用戶界面)都會將這件事暴露給你。

簡單地設置這些你想要的外觀,所有元素默認會繼承這個。以下例子:

[[UIButton appearance] setBackgroundColor:[UIColor blackColor]]; 
[[UIButton appearance] setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; 

所有的UIButtons現在默認都有這些屬性。

您可以簡單地在您的應用程序在一天中的某個時間啓動時執行檢查,然後根據此設置UI的外觀。

0

如果你這樣做,例如:UILabel.appearance().textColor = UIColor.white,這很好。 當啓用暗模式時,不要忘記設置一個UserDefaults鍵,這樣當應用程序重新啓動時,它將保持先前的外觀。此外,您可能需要設置黑色導航控制器,標籤欄和鍵盤和白色的狀態欄的內容和標題的導航控制器和標籤欄(在AppDelegate中,didFinishLaunchingWithOptions:

UINavigationBar.appearance().barTintColor = UIColor.black 
UIApplication.shared.statusBarStyle = .lightContent 
UINavigationBar.appearance().titleTextAttributes = [NSForegroundColorAttributeName:UIColor.white] 
UITabBar.appearance().barTintColor = UIColor.black 
0

我實現了類似的行爲通過製作一個外觀管理器,可以配置不同的配色方案,其中我有以下功能: -(UIColor*) colorForLabelInHomeScreen; 之後您將需要一個用戶默認設置來保留您當前的配色方案並在用戶之後重新加載屏幕改變配色方案(發佈通知,因爲它的一對多關係是一個不錯的選擇)

這種方法的好處之一是它可以用新的配色方案很容易地擴展。