iOS 暗黑模式适配

图片适配:

使用ImageSet

打开Assets.xcassets

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

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

图片适配

颜色适配:

使用ColorSet

打开Assets.xcassets

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

颜色适配

使用方法:

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图标会相对应发生变化。

tabbars 图标设置 适配深色模式

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

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

拉伸图片适配暗黑模式

禁用深色模式:

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

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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • @TOC 3. IOS 最新系统适配问题 苹果官方资料: WWDC19视频Xcode 11 beta 下载macO...
    孔雨露阅读 8,048评论 0 12
  • 前言: 在软件设计中,已有的类与新接口之间不兼容的问题相当常见,同时,我们又不想为新的接口而重写现有的类。此时,就...
    LikeSomeBody阅读 4,189评论 0 3
  • 第三、四章分享:年龄越小的孩子接受新生事物的能力越强,小豆豆来到新学校立刻就喜欢上了这里,这种能力来源于孩子的天性...
    三人堂阅读 1,670评论 0 3
  • 大家好,我是懒得关注除了vr以外事物的搬运工。为什么不敢称是行业小咔呢?主要还是接触到许多人比我都懂很多,嗯虽然有...
    YQJ阅读 3,134评论 0 1

友情链接更多精彩内容