iOS13 暗黑模式适配
2020-04-07 本文已影响0人
介是阿姐
iOS 13 暗黑模式适配
首先将xcode更新到11,在模拟器中 settings - Developer 中打开 Dark Appearance,这样就打开了暗黑模式。
UITraitCollection
UIViewController、 UIView 、UIScreen、 UIWindow 遵从了协议 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中UIViewController、 UIView 、UIScreen、 UIWindow有一个overrideInterfaceStyle的新属性,可以覆盖系统的模式
self.overrideInterfaceStyle = UIUserInterfaceStyleLight;
如果想仅单个视图监听:
self.overrideInterfaceStyle = UIUserInterfaceStyleUnspecified;
Assets.xcassets
在Assets.xcassets中配置不同模式下的图片
1.png