https://www.jianshu.com/p/97b4fbf8b3b5

 

 

iOS13 深色模式与浅色模式适配讲解
iOS 13

2019年6月4日凌晨,苹果在开发者大会上推出了新一代手机操作系统 iOS 13,主要更新了照片应用、滑动输入和更多动画表情,还有就是增加了”深色模式“,优化了音量的调节方式。

深色模式”终于来了“。

在所有关于 iOS13 的更新项目里,“深色模式”是网友讨论最多的。该模式可以根据日出日落时间自动开启,开启后,不只有壁纸,所有的系统元素都会变成暗色,起到在夜里降低屏幕亮度、保护用户眼睛的作用。

 
iOS13 深色模式与浅色模式适配讲解
Light Mode and Dark Mode

实际上,苹果用户很早就开始呼吁 iOS 加入这个深色模式。如今 iOS13 正式发布深色模式,媒体和网友评论的口吻都是“终于来了”,“迟到的深色模式”。

 
iOS13 深色模式与浅色模式适配讲解
Dark Mode Apps

对于 iOS 程序猿们而言,如何适配 iOS13 系统的深色模式呢?我推荐从以下几个方面去做适配,推荐参考项目 QPlayer 。

运用系统 API

如何运用系统 API,请阅读这篇文章《iOS13 快速读懂深色模式 API》

颜色相关的适配

  • 不同模式的适配主要涉及颜色和图片两个方面的适配。
  • 其中颜色适配,包括相关背景色和字体颜色。
  • 当系统模式切换的时候,我们不需要如何操作,系统会自动渲染页面,只需要做好不同模式的颜色和图片即可。

UIColor

  • iOS13 之前 UIColor 只能表示一种颜色,从 iOS13 开始 UIColor 是一个动态的颜色,在不同模式下可以分别代表不同的颜色。
  • 下面是 iOS13 系统提供的动态颜色种类,使用以下颜色值,在模式切换时,则不需要做特殊处理。
@interface UIColor (UIColorSystemColors)
#pragma mark System colors

@property (class, nonatomic, readonly) UIColor *systemRedColor          API_AVAILABLE(ios(7.0), tvos(9.0)) API_UNAVAILABLE(watchos);
@property (class, nonatomic, readonly) UIColor *systemGreenColor        API_AVAILABLE(ios(7.0), tvos(9.0)) API_UNAVAILABLE(watchos);
@property (class, nonatomic, readonly) UIColor *systemBlueColor         API_AVAILABLE(ios(7.0), tvos(9.0)) API_UNAVAILABLE(watchos);
@property (class, nonatomic, readonly) UIColor *systemOrangeColor       API_AVAILABLE(ios(7.0), tvos(9.0)) API_UNAVAILABLE(watchos);
@property (class, nonatomic, readonly) UIColor *systemYellowColor       API_AVAILABLE(ios(7.0), tvos(9.0)) API_UNAVAILABLE(watchos);
@property (class, nonatomic, readonly) UIColor *systemPinkColor         API_AVAILABLE(ios(7.0), tvos(9.0)) API_UNAVAILABLE(watchos);
@property (class, nonatomic, readonly) UIColor *systemPurpleColor       API_AVAILABLE(ios(9.0), tvos(9.0)) API_UNAVAILABLE(watchos);
@property (class, nonatomic, readonly) UIColor *systemTealColor         API_AVAILABLE(ios(7.0), tvos(9.0)) API_UNAVAILABLE(watchos);
@property (class, nonatomic, readonly) UIColor *systemIndigoColor       API_AVAILABLE(ios(13.0), tvos(13.0)) API_UNAVAILABLE(watchos);
// 灰色种类, 在Light模式下, systemGray6Color更趋向于白色
@property (class, nonatomic, readonly) UIColor *systemGrayColor         API_AVAILABLE(ios(7.0), tvos(9.0)) API_UNAVAILABLE(watchos);
@property (class, nonatomic, readonly) UIColor *systemGray2Color        API_AVAILABLE(ios(13.0)) API_UNAVAILABLE(tvos, watchos

相关文章: