原理
1. 将同⼀个资源,创建出两种模式的样式。系统根据当前选择的样式,⾃动获取该样式的资源
2. 每次系统更新样式时,应⽤会调⽤当前所有存在的元素调⽤对应的⼀些重新⽅法,进⾏重绘视图,可以在对应的⽅法做相应的
改动
资源⽂件适配
1. 创建⼀个Assets⽂件(或在现有的Assets⽂件中)
2. 新建⼀个图⽚资源⽂件(或者颜⾊资源⽂件、或者其他资源⽂件)
3. 选中该资源⽂件,打开 Xcode ->View ->Inspectors ->Show Attributes Inspectors (或者Option+Command+4)视图,将
Apperances 选项改为Any,Dark
4. 执⾏完第三步,资源⽂件将会有多个容器框,分别为 Any Apperance 和 Dark Apperance. Any Apperance 应⽤于默认情况
(Unspecified)与⾼亮情况(Light), Dark Apperance 应⽤于暗⿊模式(Dark)
5. 代码默认执⾏时,就可以正常通过名字使⽤了,系统会根据当前模式⾃动获取对应的资源⽂件
注意
同⼀⼯程内多个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()
护士资格证分数线2013注意
苹果官⽅强烈建议适配暗⿊模式(Dark Mode)此功能也是为了开发者能慢慢将应⽤适配暗⿊模式
所以想通过此功能不进⾏适配暗⿊模式,预计将会被拒
全局关闭暗⿊模式
1. 在Info.plist ⽂件中,添加UIUserInterfaceStyle key 名字为 User Interface Style 值为String,
2. 将UIUserInterfaceStyle key 的值设置为 Light
单个界⾯不遵循暗⿊模式
1. UIViewController与UIView 都新增⼀个属性 overrideUserInterfaceStyle
2. 将 overrideUserInterfaceStyle 设置为对应的模式,则强制限制该元素与其⼦元素以设置的模式进⾏展⽰,不跟随系统模式改
变进⾏改变
1. 设置 ViewController 的该属性,将会影响视图控制器的视图和⼦视图控制器采⽤该样式
2. 设置 View 的该属性,将会影响视图及其所有⼦视图采⽤该样式
3. 设置 Window 的该属性,将会影响窗⼝中的所有内容都采⽤样式,包括根视图控制器和在该窗⼝中显⽰内容的所有演⽰
控制器(UIPresentationController)
以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。
发布评论