首页 > 解决方案 > 如何通过 UIAppearance 控制 UITableViewCell 的标签外观?

问题描述

我正在使用UITableView来自外部库的。此表视图UITableViewCell使用 s 创建 s style: .default。我想更改单元格的外观,最重要的是单元格的标签文本颜色,而无需更改该库。

我尝试了以下方法,但未成功:

UITableViewCell.appearance().textLabel?.textColor = .systemBlue
UITableViewCell.appearance().tintColor = .systemPink
UILabel.appearance(whenContainedInInstancesOf: [UITableViewCell.self]).textColor = .systemTeal

文本颜色保持黑色。(我知道单元格使用内部UITableViewCellLabel类,并且还没有找到访问其外观代理的方法)

有趣的是,UILabel.appearance().textColor = .systemGreen 确实会影响分组表中表节标题的外观,但仅适用于最初出现在屏幕上的那些节。滚动表格以显示新的部分以黑色文本标签显示它们的标题,并且通过重用,滚动回原始部分也会重新显示这些带有黑色文本的标题。

我有哪些选择?

标签: iosuitableviewuiappearance

解决方案


表格视图、单元格、页眉、页脚等可能很古怪。UIKit 做了很多幕后工作,尤其是默认属性。

你有几个选择:

cellForRowAt您可以在或willDisplay cell或...中设置标签的文本颜色

创建自定义表格视图单元格。然后您可以使用外观代理:

UILabel.appearance(whenContainedInInstancesOf: [MyBasicCell.self]).textColor = UIColor.red

推荐阅读