iOS 13 适配 Dark Mode
2019-07-17 本文已影响0人
奴良
iOS13 的模拟器可以通过如下方式切换模式

列一个目录
- 颜色适配
- 通过代码适配
- 通过在
Assets.xcassets
中创建ColorSet
进行适配
- 图片适配
- 监听手机模式的切换
颜色适配 -> 代码适配
iOS13 我们可以通过如下代码来创建一个dynamic的颜色
let color = UIColor { (traitCollection) -> UIColor in
switch traitCollection.userInterfaceStyle {
case .light:
return .brown
case .dark:
return .white
default:
return .brown
}
}
该颜色会自动根据手机模式的改变而发生改变,例如 label.textColor = color
,那么手机模式发生改变时,你不需要做任何操作,该label
的字体颜色便会发生改变
颜色适配 -> ColorSet

如下图修改
Appearances
为Any, Dark

然后Set中会多出来一个框,如下,设置完后起个名字(如上图
firstColor
)
使用方法如下
let color = UIColor(named: "firstColor")
图片适配
图片适配同上面 ColorSet 一样,将Appearances
为Any, Dark
,然后会多出来几个框,拖进去对应的图片即可,使用方法同之前不变
监听手机模式的切换
UIViewController
及 UIView
均遵守一个协议,即UITraitEnvironment
,该协议内容定义如下:
public protocol UITraitEnvironment : NSObjectProtocol {
@available(iOS 8.0, *)
var traitCollection: UITraitCollection { get }
/** To be overridden as needed to provide custom behavior when the environment's traits change. */
@available(iOS 8.0, *)
func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?)
}
所以当手机模式发生改变时,每个 viewController
及view
都会收到回调,在对应方法中做相应操作即可