美文网首页
iOS—暗黑模式

iOS—暗黑模式

作者: 如hua | 来源:发表于2020-04-03 14:08 被阅读0次

从iOS13推出以后,暗黑模式难免成为一个热点的话题,特别是微信新版本更新支持暗黑模式以后,相信iOS开发者都有必要掌握如何在自己的项目中支持它。

适配暗黑模式主要从以下几个方面着手:
  • 颜色

  • 图片

1、颜色适配

  • iOS13 之前 UIColor只能表示一种颜色,而从 iOS13 开始UIColor是一个动态的颜色,在Light Mode和Dark Mode可以分别设置不同的颜色。

  • iOS13系统提供了一些动态颜色,不过日常开发中,我们很少用到系统的颜色。比如说placeholderTextColor,就可以使用[UIColor placeholderTextColor]直接表示输入框提示文字颜色,系统会根据当前的模式自动切换。

自定义动态UIColor

iOS13 UIColor增加了两个初始化方法,使用以下方法可以创建动态UIColor

注:一个是类方法,一个是实例方法


+(UIColor*)colorWithDynamicProvider:(UIColor*(^)(UITraitCollection*))dynamicProviderAPI_AVAILABLE(ios(13.0),tvos(13.0))API_UNAVAILABLE(watchos);
-(UIColor*)initWithDynamicProvider:(UIColor*(^)(UITraitCollection*))dynamicProviderAPI_AVAILABLE(ios(13.0),tvos(13.0))API_UNAVAILABLE(watchos);

  • 这两个方法要求传一个block进去

  • 当系统在LightMode和DarkMode之间相互切换时就会触发此回调

  • 这个block会返回一个UITraitCollection类

  • 我们需要使用其属性userInterfaceStyle,它是一个枚举类型,会告诉我们当前是LightMode还是DarkMode

使用方法

        label.textColor=UIColor.init(dynamicProvider: { (trait) ->UIColor **in**

            **if **trait.userInterfaceStyle== .light {

                **return **UIColor.black

            }

            **return **UIColor.white

        })


        self.view.backgroundColor=UIColor.init(dynamicProvider: { (trait) ->UIColor in

            if trait.userInterfaceStyle== .dark {

                returnUIColor.black

            }

            **return**UIColor.white

        })

效果
image image

2、图片适配

  • 打开Assets.xcassets

  • 新建一个Image set

  • 打开右侧工具栏,点击最后一栏,找到Appearances,选择Any,Dark,如图

image

*使用该图片


[_logoImage setImage:[UIImage imageNamed:@"icon_logo"]];

image image

获取当前系统模式

如果需要知道当前处于什么模式,并根据不同的模式执行不同的操作,iOS13中CGColor依然只能表示单一的颜色,通过调用UITraitCollection.currentTraitCollection.userInterfaceStyle,获取当前模式


      if UITraitCollection.current.userInterfaceStyle == .dark {

          print("当前为深色模式")

      }else{

          print("当前为浅色模式")

      }

希望对您有所帮助。

相关文章

  • 暗黑模式开发

    iOS13暗黑模式适配(项目开发版) iOS 13 DarkMode 暗黑模式 IOS 暗黑模式适配---基础适配

  • iOS 暗黑模式适配

    DarkModeAdapter 简介 iOS 暗黑模式适配懒人版 普通模式(light)下: 暗黑模式(dark)...

  • iOS 暗黑模式适配(项目实战篇)

    通过上面两篇文章iOS 暗黑模式适配(方法介绍篇)iOS 暗黑模式适配(叨叨篇)我们知道了暗黑模式怎么去适配,那么...

  • 自己适配iOS13解决的问题总结

    自己适配iOS13解决的问题总结 1.暗黑模式Dark Mode iOS 13 推出暗黑模式,UIView默认背景...

  • uni-app做iOS的夜间模式

    iOS13适配暗黑模式/夜间模式/深色模式/暗黑主题(DarkMode)问题:1.监听Android深色或浅色模式...

  • ios13适配不断更新

    1. 暗黑模式 iOS13使用暗黑模式时,UIView默认背景色会变成暗黑色。适配暗黑模式的工作量较大,改为强制使...

  • iOS13 适配总结

    1. 暗黑模式 iOS13使用暗黑模式时,UIView默认背景色会变成暗黑色。适配暗黑模式的工作量较大,改为强制使...

  • 百度APP iOS暗黑模式适配的完美解决方案

    百度APP iOS暗黑模式适配的完美解决方案百度APP iOS暗黑模式适配的完美解决方案

  • iOS高德地图适配暗黑模式

    iOS13以后iOS开发者讨论最大的应该就是暗黑模式了,我自己最近也在加班加点地为公司所有iOS项目适配暗黑模式,...

  • iOS:暗黑模式适配

    简介:iOS13苹果推出的暗黑模式,在去年苹果已经声明必须适配暗黑模式否则会下架。网上有很多好的文章来适配暗黑模式...

网友评论

      本文标题:iOS—暗黑模式

      本文链接:https://www.haomeiwen.com/subject/shphphtx.html