一、开发环境
Xcode11 正式版
iOS13 beta版本
Mac系统: 10.15 beta版本
二、适配原理
- 将同一个资源,创建出两种模式的样式。系统根据当前选择的样式,自动获取该样式的资源。
- 每次系统更新样式时,应用会调用当前所有存在的元素调用对应的一些重新方法,进行重绘视图,可以在对应的方法做相应的改动
三、资源适配
step1、颜色适配 通过 Assets 配置
在 iOS 11和 Xcode 9 中,我们可以在 Images.xcassets 中添加颜色。
现在我们可以为颜色再配置一个用于暗黑模式的对应的颜色。
我们可以选择 (原彩,深色) 或者 (原彩,深色,夜览)
step2、图片适配
打开Assets.xcassets,新建一个Image set,打开右侧工具栏,点击最后一栏,找到Appearances,同样可以选择 (原彩,深色) 或者 (原彩,深色,夜览),然后在对应的位置添加图片
四、代码适配
step1、UIColor 适配 语义化颜色介绍加代码展示
iOS13 之前 UIColor只能表示一种颜色,而从 iOS13 开始UIColor是一个动态的颜色,在Light Mode和Dark Mode可以分别设置不同的颜色。
iOS13系统提供了一些动态颜色。苹果引入了全新系统颜色和一套根据颜色使用目的而约定颜色命名的语义化颜色
#pragma mark - 语义化颜色
@property (class, nonatomic, readonly) UIColor *systemBrownColor
@property (class, nonatomic, readonly) UIColor *systemIndigoColor
@property (class, nonatomic, readonly) UIColor *systemGray2Color
@property (class, nonatomic, readonly) UIColor *systemGray3Color
@property (class, nonatomic, readonly) UIColor *systemGray4Color
@property (class, nonatomic, readonly) UIColor *systemGray5Color
@property (class, nonatomic, readonly) UIColor *systemGray6Color
@property (class, nonatomic, readonly) UIColor *labelColor
@property (class, nonatomic, readonly) UIColor *secondaryLabelColor
@property (class, nonatomic, readonly) UIColor *tertiaryLabelColor
@property (class, nonatomic, readonly) UIColor *quaternaryLabelColor
@property (class, nonatomic