ios - 如何通过 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
确实会影响分组表中表节标题的外观,但仅适用于最初出现在屏幕上的那些节。滚动表格以显示新的部分以黑色文本标签显示它们的标题,并且通过重用,滚动回原始部分也会重新显示这些带有黑色文本的标题。
我有哪些选择?
解决方案
表格视图、单元格、页眉、页脚等可能很古怪。UIKit 做了很多幕后工作,尤其是默认属性。
你有几个选择:
cellForRowAt
您可以在或willDisplay cell
或...中设置标签的文本颜色
创建自定义表格视图单元格。然后您可以使用外观代理:
UILabel.appearance(whenContainedInInstancesOf: [MyBasicCell.self]).textColor = UIColor.red
推荐阅读
- javascript - 在 android studio 资产中的 .js 文件中调用 javascript 方法
- c++ - 如何使用模板生成常规参数列表并将其传递给运行时函数?
- c - 如何定义符合 MISRA 2012 规则 5.2 的变量名称?
- c++ - std::function 指针错误:无法将 &A::a 转换为 std::function<>&& 类型
- javascript - 超过 2 个条件的三元运算符
- c - Sprintf_s 给了我奇怪的盒子而不是字符串
- php - 如何在 Gloudemans/Shoppingcart 中为 laravel 编辑选项键值?
- c - rcu_read_locks 的嵌套
- javascript - 如何将多个输入的值存储在映射 React 的状态中
- javascript - 自写 MaskedInput 导致无限循环