iOS14中表格部分标题中的白色背景
Posted
技术标签:
【中文标题】iOS14中表格部分标题中的白色背景【英文标题】:White background in table section header in iOS14 【发布时间】:2020-10-14 14:09:55 【问题描述】:使用 xcode12 构建到 iOS14 后出现此问题。
我有一个透明背景的部分标题,在 ios14 上它变成白色,并在层次结构中添加了新的 _UISystemBackgroundView
。
【问题讨论】:
【参考方案1】:iOS 14 带有新的两个单元格配置:
-
内容配置。
UIContentConfiguration
顾名思义,内容配置可以帮助您操作单元格的内容,例如图像、文本、辅助文本、布局指标和行为。
-
后台配置
UIBackgroundConfiguration
可以帮助处理背景颜色、视觉效果、笔触、插图和圆角半径。即使我们没有指定,所有单元格都将继承默认的背景配置。
解决方案
要摆脱默认的iOS14白色背景,您需要更改UITableViewCell
或UITableViewHeaderFooterView
backgroundConfiguration,如下所示
// 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了解更多
【讨论】:
胡萨姆拯救了一天!【参考方案2】:在您的 UITableViewHeaderFooterView / UITableViewCell 自定义类中 - 使用实现示例覆盖下一个方法:
斯威夫特:
@available(iOS 14.0, *)
override func updateConfiguration(using state: UICellConfigurationState)
backgroundConfiguration = UIBackgroundConfiguration.clear()
目标-C:
- (void)updateConfigurationUsingState:(UICellConfigurationState *)state
self.backgroundConfiguration = [UIBackgroundConfiguration clearConfiguration];
【讨论】:
很好的解决方案,请注意状态是UIViewConfigurationState
类中的 UITableViewHeaderFooterView
类。【参考方案3】:
Objective-C 版本的@Husam 解决方案:
if (@available(iOS 14.0, *))
UIBackgroundConfiguration *bgConfig = [UIBackgroundConfiguration listPlainCellConfiguration];
bgConfig.backgroundColor = UIColor.clearColor;
[UITableViewHeaderFooterView appearance].backgroundConfiguration = bgConfig;
【讨论】:
【参考方案4】:使用 iOS 14 基于配置的 API 可能会禁用那些旧版 API 的功能(例如cell.textLabel
、cell.detailTextLabel
)。
为防止这种系统行为,您可以为页眉/页脚/单元格设置 backgroundView
(旧版 API),然后为该视图设置自定义 backgroundColor
。
【讨论】:
以上是关于iOS14中表格部分标题中的白色背景的主要内容,如果未能解决你的问题,请参考以下文章