iOS14 table 部分的白色背景 header
White background in table section header in iOS14
使用 xcode12.
构建 iOS14 后出现此问题
我有一个透明背景的 header 部分,在 iOS14 上它变成了白色,新的 _UISystemBackgroundView
添加到层次结构中。
iOS 14 带有新的两个电池配置:
- 内容配置。
UIContentConfiguration
顾名思义,内容配置可以帮助您操纵单元格的内容,例如图像、文本、辅助文本、布局指标和行为。
- 后台配置
UIBackgroundConfiguration
可以帮助处理背景颜色、视觉效果、描边、插图和圆角半径。即使我们不指定,所有单元格都将继承默认背景配置。
解决方案
要摆脱默认的 iOS14 白色背景,您需要更改 UITableViewCell
或 UITableViewHeaderFooterView
背景配置,如下所示
// Add this code in your AppDelegate didFinishLauncingWithOptions
// or you can change configuration of certain subclass using self. backgroundConfiguration = ...
if #available(iOS 14.0, *) {
var bgConfig = UIBackgroundConfiguration.listPlainCell()
bgConfig.backgroundColor = UIColor.clear
UITableViewHeaderFooterView.appearance().backgroundConfiguration = bgConfig
//For cell use: UITableViewCell.appearance().backgroundConfiguration = bgConfig
}
阅读this article了解更多
Objective-C @Husam 解决方案的版本:
if (@available(iOS 14.0, *)) {
UIBackgroundConfiguration *bgConfig = [UIBackgroundConfiguration listPlainCellConfiguration];
bgConfig.backgroundColor = UIColor.clearColor;
[UITableViewHeaderFooterView appearance].backgroundConfiguration = bgConfig;
}
在您的 UITableViewHeaderFooterView / UITableViewCell 自定义中 class - 使用实现示例覆盖下一个方法:
Swift:
@available(iOS 14.0, *)
override func updateConfiguration(using state: UICellConfigurationState) {
backgroundConfiguration = UIBackgroundConfiguration.clear()
}
Objective-C:
- (void)updateConfigurationUsingState:(UICellConfigurationState *)state {
self.backgroundConfiguration = [UIBackgroundConfiguration clearConfiguration];
}
使用 iOS 14 基于 API 的配置可能会禁用那些遗留 API 的功能(例如 cell.textLabel
、cell.detailTextLabel
)。
要防止此系统行为,您可以将 backgroundView
(旧版 API)设置为您的 header/footer/cell,然后为该视图设置自定义 backgroundColor
。
使用 xcode12.
构建 iOS14 后出现此问题我有一个透明背景的 header 部分,在 iOS14 上它变成了白色,新的 _UISystemBackgroundView
添加到层次结构中。
iOS 14 带有新的两个电池配置:
- 内容配置。
UIContentConfiguration
顾名思义,内容配置可以帮助您操纵单元格的内容,例如图像、文本、辅助文本、布局指标和行为。
- 后台配置
UIBackgroundConfiguration
可以帮助处理背景颜色、视觉效果、描边、插图和圆角半径。即使我们不指定,所有单元格都将继承默认背景配置。
解决方案
要摆脱默认的 iOS14 白色背景,您需要更改 UITableViewCell
或 UITableViewHeaderFooterView
背景配置,如下所示
// Add this code in your AppDelegate didFinishLauncingWithOptions
// or you can change configuration of certain subclass using self. backgroundConfiguration = ...
if #available(iOS 14.0, *) {
var bgConfig = UIBackgroundConfiguration.listPlainCell()
bgConfig.backgroundColor = UIColor.clear
UITableViewHeaderFooterView.appearance().backgroundConfiguration = bgConfig
//For cell use: UITableViewCell.appearance().backgroundConfiguration = bgConfig
}
阅读this article了解更多
Objective-C @Husam 解决方案的版本:
if (@available(iOS 14.0, *)) {
UIBackgroundConfiguration *bgConfig = [UIBackgroundConfiguration listPlainCellConfiguration];
bgConfig.backgroundColor = UIColor.clearColor;
[UITableViewHeaderFooterView appearance].backgroundConfiguration = bgConfig;
}
在您的 UITableViewHeaderFooterView / UITableViewCell 自定义中 class - 使用实现示例覆盖下一个方法:
Swift:
@available(iOS 14.0, *)
override func updateConfiguration(using state: UICellConfigurationState) {
backgroundConfiguration = UIBackgroundConfiguration.clear()
}
Objective-C:
- (void)updateConfigurationUsingState:(UICellConfigurationState *)state {
self.backgroundConfiguration = [UIBackgroundConfiguration clearConfiguration];
}
使用 iOS 14 基于 API 的配置可能会禁用那些遗留 API 的功能(例如 cell.textLabel
、cell.detailTextLabel
)。
要防止此系统行为,您可以将 backgroundView
(旧版 API)设置为您的 header/footer/cell,然后为该视图设置自定义 backgroundColor
。