ios - UIButton 子类在没有 setTitleColor(_ , for state:) 的情况下更改标题颜色 [Swift]
问题描述
如何在不使用的情况下更改UIButton
TitleLabel
子类中的文本颜色?不起作用(基于此答案)。func setTitleColor(_ color: UIColor?, for state: UIControl.State)
self.titleLabel!.textColor = .yellow
我正在尝试做的事情:
目前我在一个UIButton
子类中工作,我正在setSomethingColor(_ color: UIColor?, for state: UIControl.State)
使用 overrides 和didSet
over来处理各种行为isSelected
,isHighlighted
...自行设置各种元素的颜色属性。
我可以更改背景颜色self.backgroundColor = .red
,色调颜色,self.tintColor = .green
但我不能更改文本颜色,self.titleLabel!.textColor = .yellow
这似乎是为UILabel
...设置颜色的正确方法
是唯一可能的方法func setTitleColor(_ color: UIColor?, for state: UIControl.State)
吗?我错过了什么吗?
谢谢您的帮助。
解决方案
根据苹果文档
不要使用标签对象来设置文本颜色或阴影颜色。相反,使用此类的 setTitleColor( :for:) 和 setTitleShadowColor( :for:) 方法来进行这些更改。要设置标签的实际文本,请使用 setTitle(_:for:) (button.titleLabel.text 不允许您设置文本)。即使按钮尚未显示,titleLabel 属性也会返回一个值。对于系统按钮,该属性的值为 nil。
推荐阅读
- ios - 在发布 ipa 的前台未收到通知
- excel - 某年两个日期之间的天数
- javascript - 三元运算符 javascript
- c++ - 在 lambda 中捕获值的 std::move() 上的 decltype() 导致类型不正确
- mysql - 使用 AS 创建的变量时 Where 子句中的未知列
- javascript - Redux 工具包和 Axios
- java - spring-data-cassandra CassandraBatchTemplate 不公开
- speech-to-text - 使用 Microsoft Speech to text REST API 时收到 400-对 OGG 文件格式的错误请求
- jquery - 在单击输入类型时附加按钮的值
- performance - 与在同一窗口中打开链接相比,在新窗口中打开链接是否会提高性能/减少当前窗口中使用的资源