美文网首页Swift编程
iOS 13 黑暗模式适配

iOS 13 黑暗模式适配

作者: iOS虞 | 来源:发表于2019-09-21 20:45 被阅读0次
    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

    相关文章

      网友评论

        本文标题:iOS 13 黑暗模式适配

        本文链接:https://www.haomeiwen.com/subject/mymeuctx.html