暗黑模式
原理
資源文件適配
注意
同一工程內多個Assets文件在打包后,就會生成一個Assets.car 文件,所以要保證Assets內資源文件的名字不能相同
如何在代碼里進行適配顏色(UIColor)
+ (UIColor *)colorWithDynamicProvider:(UIColor * (^)(UITraitCollection *))dynamicProvider API_AVAILABLE(ios(13.0), tvos(13.0)) API_UNAVAILABLE(watchos);- (UIColor *)initWithDynamicProvider:(UIColor * (^)(UITraitCollection *))dynamicProvider API_AVAILABLE(ios(13.0), tvos(13.0)) API_UNAVAILABLE(watchos);
e.g.
[UIColor colorWithDynamicProvider:^UIColor * _Nonnull(UITraitCollection * _Nonnull trait) { if (trait.userInterfaceStyle == UIUserInterfaceStyleDark) { return UIColorRGB(0x000000); } else { return UIColorRGB(0xFFFFFF); } }];
系統調用更新方法,自定義重繪視圖
當用戶更改外觀時,系統會通知所有window與View需要更新樣式,在此過程中iOS會觸發以下方法, 完整的觸發方法文檔
UIView
traitCollectionDidChange(_:)layoutSubviews()draw(_:)updateConstraints()tintColorDidChange()
UIViewController
traitCollectionDidChange(_:)updateViewConstraints()viewWillLayoutSubviews()viewDidLayoutSubviews()
UIPresentationController
traitCollectionDidChange(_:)containerViewWillLayoutSubviews()containerViewDidLayoutSubviews()
如何不進行系統切換樣式的適配
注意
蘋果官方強烈建議適配 暗黑模式(Dark Mode)此功能也是為了開發者能慢慢將應用適配暗黑模式
所以想通過此功能不進行適配暗黑模式,預計將會被拒
全局關閉暗黑模式
單個界面不遵循暗黑模式
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。
新聞熱點
疑難解答