zoukankan      html  css  js  c++  java
  • iOS 适配暗黑模式

    不管是UIView,还是UIViewController或者子类

    在切换 ”设置“ 中的 “显示与亮度” 中 模式时,都会调用一个方法,这个方法是系统API

    swift:

    //MARK:暗黑模式监听
    override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) {
        super.traitCollectionDidChange(previousTraitCollection)
        if #available(iOS 13.0, *) {
            if self.traitCollection.hasDifferentColorAppearance(comparedTo: previousTraitCollection) {
                
                if UITraitCollection.current.userInterfaceStyle==UIUserInterfaceStyle.dark {
    
                    //暗黑模式
                    
                }else{
                    //明亮模式
                    
                }
                   
            }
        } else {
            // Fallback on earlier versions
        }
    }
    

    oc:

    //MARK:暗黑模式监听
    - (void)traitCollectionDidChange:(UITraitCollection *)previousTraitCollection{
        [super traitCollectionDidChange:previousTraitCollection];
        
        if (@available(iOS 13.0, *)) {
            if ([[UITraitCollection currentTraitCollection] userInterfaceStyle]==UIUserInterfaceStyleDark) {
                
            }
            else{
                
            }
        } else {
            // Fallback on earlier versions
            
        }
        
    }
    

    往往在初始化View时也要区分一下,是明亮模式还是暗黑模式。即使一上来会调用以上的方法,毕竟在VC中创建View不会写到以上代理方法。

    swift:

    if #available(iOS 13.0, *) {
      if UITraitCollection.current.userInterfaceStyle==UIUserInterfaceStyle.dark {
          //暗黑模式
          
      }else{
          //明亮模式
          
      }
    } else {
      // Fallback on earlier versions
    }
    

    oc:

    if (@available(iOS 13.0, *)) {
        if ([[UITraitCollection currentTraitCollection] userInterfaceStyle]==UIUserInterfaceStyleDark) {
            
        }
        else{
            
        }
    } else {
        // Fallback on earlier versions
        
    }
    

    对颜色的适配就是这样的。

    而图片适配请参考:https://www.jianshu.com/p/476cac3851c8?utm_campaign=maleskine

    ///////////////////////////////////////////////////////////////////////////

    额外的,对WKWebView适配:在didFinished代理方法里面写

    //适配暗黑模式
            var backgroundColor : String = ""
            var labelColor : String = ""
            if #available(iOS 13.0, *) {
              if UITraitCollection.current.userInterfaceStyle==UIUserInterfaceStyle.dark {
                  //暗黑模式
                backgroundColor = ""#000000"";
                labelColor = "'#828282'";
              }else{
                  //明亮模式
                backgroundColor = ""#FFFFFF"";
                labelColor = "'#666666'";
              }
            } else {
              // Fallback on earlier versions
            }
    
            webView.evaluateJavaScript(String(format: "document.body.style.backgroundColor=%@", backgroundColor)) { (obj, error) in
                
            }
            webView.evaluateJavaScript(String(format: "document.getElementsByTagName('body')[0].style.webkitTextFillColor=%@", labelColor)) { (obj, error) in
                
            }
    
    此文仅为鄙人学习笔记之用,朋友你来了,如有不明白或者建议又或者想给我指点一二,请私信我。liuw_flexi@163.com/QQ群:582039935. 我的gitHub: (学习代码都在gitHub) https://github.com/nwgdegitHub/
  • 相关阅读:
    数据库与数据仓库的区别
    MySQL数据库与表的最基本命令大盘点
    SQL Server 2008创建数据库
    [HttpClient]简单使用GET请求
    [HttpClient]HttpClient简介
    [jQuery编程挑战]003 克隆一个页面元素及其相关事件
    [设计模式]观察者模式
    [jQuery编程挑战]002:实现一个转盘大抽奖
    [设计模式]备忘录模式
    [javascript]String添加trim和reverse方法
  • 原文地址:https://www.cnblogs.com/liuw-flexi/p/13930175.html
Copyright © 2011-2022 走看看