iOS13 暗黑模式适配

iOS 13 暗黑模式适配

首先将xcode更新到11,在模拟器中 settings - Developer 中打开 Dark Appearance,这样就打开了暗黑模式。

UITraitCollection

UIViewControllerUIViewUIScreenUIWindow 遵从了协议 UITraitEnvironment ,这个协议有一个 UITraitCollection 类型的属性 traitCollection,从而这些类也拥有了这个属性 ,我们可以通过这个属性来判断当前的app的是否暗黑模式:

BOOL isDark = (self.traitCollection.userInterfaceStyle == UIUserInterfaceStyleDark);

使用时机

UIViewController

- (void)viewWillLayoutSubviews;
- (void)viewDidLayoutSubviews;
- (void)traitCollectionDidChange:(UITraitCollection *)previousTraitCollection;

UIView

- (void)drawRect:(CGRect)rect;
- (void)layoutSubviews;
- (void)traitCollectionDidChange:(UITraitCollection *)previousTraitCollection;

注:使用 traitCollectionDidChange 这种方式,只有在模式发生改变时才会调用。

关闭全局暗黑模式

info.plist中设置key User Interface Style value Light

暗黑模式打开,单个视图关闭

在iOS13中UIViewControllerUIViewUIScreenUIWindow有一个overrideInterfaceStyle的新属性,可以覆盖系统的模式
self.overrideInterfaceStyle = UIUserInterfaceStyleLight;
如果想仅单个视图监听:
self.overrideInterfaceStyle = UIUserInterfaceStyleUnspecified;

Assets.xcassets

Assets.xcassets中配置不同模式下的图片

1.png

参考

https://www.fivestars.blog/code/ios-dark-mode-how-to.html

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一. 为什么要适配暗黑模式 1、可以帮助我们节省更多的电量。 这得益于 OLED 屏幕的发展,与 LCD 不同 ,...
    渊博1993阅读 1,111评论 0 1
  • 根据苹果的⼀贯保持的⻛格,我们会特别简单、舒服的适配了它。 因此,苹果介绍的就是这三句句话。Dark mode i...
    iridescentzc阅读 18,961评论 2 25
  • 最近因为需要拾起一年之前的公司项目,iOS 13 系统下需要进行适配的太多了,做个总结吧。 这里小伙伴们需要了解 ...
    益达哥阅读 1,048评论 0 1
  • 尽管iOS13已经推出了大半年多的时间,但是依旧还是有不少APP还未适配iOS13。对此,苹果公司再次给开发者们发...
    丶BEGIN丶阅读 1,635评论 1 7
  • 对于iOS13适配汇总以及遇到的问题注意:以下适配内容,必须适配的会以"必须"标出 1. Dark Model(必...
    HF_K阅读 1,509评论 0 4