【问题标题】:How to control UITableViewCell's label appearance via UIAppearance?如何通过 UIAppearance 控制 UITableViewCell 的标签外观?
【发布时间】:2020-08-26 20:18:53
【问题描述】:

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

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

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

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

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

我有什么选择?

【问题讨论】:

    标签: ios uitableview uiappearance


    【解决方案1】:

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

    你有几个选择:

    您可以将标签的文本颜色设置为cellForRowAtwillDisplay cell,或者...

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

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

    【讨论】:

    • 谢谢,这正是我想要避免的。正如我所说,代码不是我的,而是深藏在一个我并不特别热衷于分叉的 Objective-C cocoapods 库中......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-14
    • 2011-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多