iOS 13 黑暗模式适配

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

图片适配


iOS 13 黑暗模式适配_第1张图片
QQ20190921-204412.png

你可能感兴趣的:(iOS 13 黑暗模式适配)