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白色背景,您需要更改UITableViewCellUITableViewHeaderFooterView 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.textLabelcell.detailTextLabel)。

为防止这种系统行为,您可以为页眉/页脚/单元格设置 backgroundView(旧版 API),然后为该视图设置自定义 backgroundColor

【讨论】:

以上是关于iOS14中表格部分标题中的白色背景的主要内容,如果未能解决你的问题,请参考以下文章

在 swift 中选择时,节标题背景颜色会发生变化

如何使用 C++ 搜索具有非白色背景的图像?

java 图片如何让白色变透明

更改标签栏中活动整个部分的颜色 - iOS 7

xcode ios - 表格视图部分标题中的图像

用PHP检测白色图像背景?