美文网首页iOS常用
iOS 暗黑模式适配

iOS 暗黑模式适配

作者: 梦记 | 来源:发表于2020-09-20 11:43 被阅读0次

DarkModeAdapter

简介

iOS 暗黑模式适配懒人版

普通模式(light)下:


lightMode.png

暗黑模式(dark)下:


darkMode.png
  • 此方式集成简单,代码侵入性小
  • 项目颜色统一集中管理,避免杂乱
  • 支持关闭暗黑模式适配
  • 支持颜色透明度
  • 支持其他模式与暗黑模式动态切换(无需在每个页面单独对模式切换进行适配)
  • 旧项目改造:
      1. 如果项目最低支持iOS11.0,那么恭喜你,只需在color assets中配置颜色即可,而且系统会自动调用assets中的当前模式下的颜色,无需额外的代码控制
      1. 如果项目最低支持小于iOS11.0,那么需在bundle中的plist配置文件中配置颜色
      1. 需在使用颜色的时候替换成扩展方法中的颜色赋值方法

使用说明

  • 1.在项目启动的时候初始化, 此时会把所有颜色都注册好,加载到内存中

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
        // Override point for customization after application launch.
        [[AdapterManager sharedInstance] configDarkModeColorBundleName:@"DarkModeAdapter"];
        //    [AdapterManager sharedInstance].shouldFollowSystemMode = NO;
        return YES;
    }
    
  • 2.在给控件赋值颜色的时候调用扩展方法

    - (void)viewDidLoad {
        [super viewDidLoad];
        self.view.backgroundColor = [UIColor qx_colorNamed:Color_FFFFFF];
        self.label.textColor = [UIColor qx_colorNamed:Color_E6B97D];
    
        self.testView.backgroundColor = [UIColor qx_colorNamed:Color_5F9EA0_Opacity];
        self.testView.layerShadowColorHex = Color_EE82EE_Shadow;
        self.testView.layer.shadowOpacity = 1.0;
        self.testView.layer.shadowRadius = 8.0;
        self.testView.layer.shadowOffset = CGSizeMake(8.0, 8.0);
    
        self.button.backgroundColor = [UIColor qx_colorNamed:Color_FFB700];
    
        self.button.layer.cornerRadius = 20.0;
        self.button.layerBorderColorHex = Color_90EE90;
        self.button.layer.borderWidth = 2.0;
    }
    
  • 至于CoreGraphics中的颜色设置,可以分类中扩展属性进行配置;也可以自行进行单独地动态配置(方案一:在viewDidLayoutSubViews、layoutSubViews等中配置layer层颜色;方案二:普通配置之后,添加系统的模式切换监听方法,在此方法中重新赋值layer层颜色)

    // Here you can expand the properties you want
    @interface UIView (Adapter)
    
    /// Config CaLayer BorderColor use Hex String
    @property(nonatomic, copy) NSString *layerBorderColorHex;
    
    /// Config CaLayer BackgroundColor use Hex String
    @property(nonatomic, copy) NSString *layerBackgroundColorHex;
    
    /// Config CaLayer ShadowColor use Hex String
    @property(nonatomic, copy) NSString *layerShadowColorHex;
    
    - (void)viewDidLoad {
        [super viewDidLoad];
        self.button.layer.cornerRadius = 20.0;
        self.button.layerBorderColorHex = Color_90EE90;
        self.button.layer.borderWidth = 2.0;
    }
    

    或者:

    - (void)configSubViewsShadow {
        [self.bgView shadowWithSide:ShadowSideNoTop shadowColorName:BlackShadowColor shadowOpacity:0.4 shadowWidth:4.0 shadowRadius:4.0];
    }
    
    - (void)layoutSubviews {
        [super layoutSubviews];
        [self configSubViewsShadow];
    }
    

    或者:

    - (void)traitCollectionDidChange:(UITraitCollection *)previousTraitCollection {
        if (![AdapterManager sharedInstance].shouldFollowSystemMode) return;
        if (@available(iOS 13.0, *)) {
            UIApplicationState state = [UIApplication sharedApplication].applicationState;
            if (state != UIApplicationStateBackground && previousTraitCollection && [self.traitCollection hasDifferentColorAppearanceComparedToTraitCollection:previousTraitCollection]) {
                [self configSubViewsShadow];
            }
        }
    }
    

至于图标适配

  • 在Assets中,Appearance中选择Any, Dark,再添加dark下的图标即可;此处不作过多说明。

最后附上demo地址

相关文章

  • 暗黑模式开发

    iOS13暗黑模式适配(项目开发版) iOS 13 DarkMode 暗黑模式 IOS 暗黑模式适配---基础适配

  • iOS 暗黑模式适配(项目实战篇)

    通过上面两篇文章iOS 暗黑模式适配(方法介绍篇)iOS 暗黑模式适配(叨叨篇)我们知道了暗黑模式怎么去适配,那么...

  • iOS 暗黑模式适配

    DarkModeAdapter 简介 iOS 暗黑模式适配懒人版 普通模式(light)下: 暗黑模式(dark)...

  • 百度APP iOS暗黑模式适配的完美解决方案

    百度APP iOS暗黑模式适配的完美解决方案百度APP iOS暗黑模式适配的完美解决方案

  • iOS:暗黑模式适配

    简介:iOS13苹果推出的暗黑模式,在去年苹果已经声明必须适配暗黑模式否则会下架。网上有很多好的文章来适配暗黑模式...

  • 自己适配iOS13解决的问题总结

    自己适配iOS13解决的问题总结 1.暗黑模式Dark Mode iOS 13 推出暗黑模式,UIView默认背景...

  • uni-app做iOS的夜间模式

    iOS13适配暗黑模式/夜间模式/深色模式/暗黑主题(DarkMode)问题:1.监听Android深色或浅色模式...

  • ios13适配不断更新

    1. 暗黑模式 iOS13使用暗黑模式时,UIView默认背景色会变成暗黑色。适配暗黑模式的工作量较大,改为强制使...

  • iOS13 适配总结

    1. 暗黑模式 iOS13使用暗黑模式时,UIView默认背景色会变成暗黑色。适配暗黑模式的工作量较大,改为强制使...

  • iOS13 暗黑模式适配

    iOS13 暗黑模式适配,代码设置主题模式. AppDelegate中设置主题模式 UINavigationCon...

网友评论

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

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