iOS 暗黑模式适配

图片适配:

使用ImageSet

打开Assets.xcassets

新建一个Image set  选择右边栏的Appearances中对应的选项适配深色模式。

使用方法:[UIImage imageNamed:@"xxxx"];

iOS 暗黑模式适配

图片适配

颜色适配:

使用ColorSet

打开Assets.xcassets

新建一个Color set  选择右边栏的Appearances中对应的选项适配深色模式。

iOS 暗黑模式适配

颜色适配

使用方法:

self.view.backgroundColor =  [UIColor colorNamed:@"xxxx"];

建议写一个通用的方法来设置颜色

举个栗子????:

注:[UIColor colorNamed:colorName]; 这个方法iOS11 之后才支持使用

self.view.backgroundColor = [self fitDeviceModeColorWithColorSetByColorName:colorName orWithColor:color];

-(UIColor *)fitDeviceModeColorWithColorSetByColorName:(NSString *)colorName orWithColor:(UIColor *)color{

    if(@available(iOS11.0, *)) {

        return [UIColor colorWithDynamicProvider:^UIColor*_Nonnull(UITraitCollection*_NonnulltraitCollection) {

            return  [UIColor colorNamed:colorName];

        }];

    }else{

        return color;

    }

}

适配暗黑遇到的问题:

1:tabbar图标在切换深色模式时,图标没有发生改变。重新打开app才生效

解决方案:

tabbar 在ImageSet中设置渲染模式为:Original Image。这样app切换深/浅模式后,tabbar图标会相对应发生变化。

iOS 暗黑模式适配

tabbars 图标设置 适配深色模式

2:有拉伸的图片在模式切换之后,图片没有发生变化。

解决方案:图片的拉伸在Image set 里设置Slicing。

iOS 暗黑模式适配

拉伸图片适配暗黑模式

禁用深色模式:

1: 在App内禁用深色模式: 可以在Info.plist(全局) 中,设置 User Interface Style 为 Light。

2: 在单个页面内禁用深色模式使用overrideUserInterfaceStyle: self.overrideUserInferfaceStyle = UIUserInterfaceStyleLight。

在单个页面内禁用浅色模式使用overrideUserInterfaceStyle: self.overrideUserInferfaceStyle = UIUserInterfaceStyleDark。