2017-02-16 25 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; 之后您将需要一个用户默认设置来保留您当前的配色方案并在用户之后重新加载屏幕改变配色方案(发布通知,因为它的一对多关系是一个不错的选择)

这种方法的好处之一是它可以用新的配色方案很容易地扩展。

相关问题