1. 颜色适配
2.图片适配
@available(iOS 13.0, *)
public init(dynamicProvider: @escaping (UITraitCollection) -> UIColor)
self.view.backgroundColor = UIColor(dynamicProvider: { (coll) -> UIColor in
if coll.userInterfaceStyle == .dark {
return UIColor.red
} else {
return UIColor.blue
}
})
又新增一个UITraitCollection
方法,我们可以通过它来判断当前系统的模式
open class UITraitCollection : NSObject, NSCopying, NSSecureCoding {...}
UIView
UIViewControlelr
UIScreen
UIWindow
都遵从UITraitEnvironment
协议
public protocol UITraitEnvironment : NSObjectProtocol {
@available(iOS 8.0, *)
var traitCollection: UITraitCollection { get }
}
UIUserInterfaceStyle
是个枚举有3种模式
public enum UIUserInterfaceStyle : Int {
case unspecified
case light
case dark
}
在协议中有一个traitCollection
属性判断当前处于哪种模式
1.
let style = self.traitCollection.userInterfaceStyle
switch style {
case .dark:
print("黑暗模式")
case .light:
print("亮模式")
case .unspecified:
print("未指定")
default:
break
}
2.
let collection = UITraitCollection.current
如果我们不想适配黑暗模式,全局关闭黑暗模式在Info.plist文件中,添加key为 User Interface Style
,value设置为Light
即可关闭
关闭单个页面或试图的黑暗模式只需设置overrideUserInterfaceStyle
指定模式
self.overrideUserInterfaceStyle = .dark
如果希望一个子视图监听系统的模式,要将overrideUserInterfaceStyle 设置成.unspecified
图片适配
QQ20190921-204412.png
网友评论