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
中配置不同模式下的图片