TABAnimation骨架屏框架闪白问题
在使用TABAnimation骨架屏框架时,UITableView首次加载会出现除第一行以外都闪白得情况,稍纵即逝,断点断不到,图层也找不到白色的这一层。在普通白色主题色App中很难被发现,但在深色项目中尤其明显。
通过对TABAnimation库的排查以及项目框架的排查,抽丝剥茧,终于找到了问题原因:
在iOS14开始,系统新增了两个单元格配置:
- 内容配置
UIContentConfiguration
可以帮助您操作单元格的内容,如图片、文本、辅助文本、布局指标和行为。 - 背景配置
UIBackgroundConfiguration
可以帮助操作背景颜色、视觉效果、笔画、插入和角半径。所有单元格会继承默认的后台配置。
在项目图层中,背景配置体现为列表首次加载前cell中多出了一个_UISystemBackgroundView
视图,该视图包含一个白色的子视图。使用TabAnimation时,会将这个视图的加载过程暴露出来。
我们要做的就是找到他,并把子视图背景色改掉即可。
将以下代码添加到didFinishLaunchingWithOptions中
Objective-C
if (@available(iOS 14.0, *)) {
UIBackgroundConfiguration *bgconfig = [UIBackgroundConfiguration listPlainCellConfiguration];
bgconfig.backgroundColor = UIColor.clearColor;
[UITableViewCell appearance].backgroundConfiguration = bgconfig;
}
Swift
if #available(iOS 14.0, *) {
var bgConfig = UIBackgroundConfiguration.listPlainCell()
bgConfig.backgroundColor = UIColor.clear
UITableViewHeaderFooterView.appearance().backgroundConfiguration = bgConfig
//For cell use: UITableViewCell.appearance().backgroundConfiguration = bgConfig
}