首页 > 解决方案 > 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 和didSetover来处理各种行为isSelectedisHighlighted...自行设置各种元素的颜色属性。

我可以更改背景颜色self.backgroundColor = .red,色调颜色,self.tintColor = .green我不能更改文本颜色self.titleLabel!.textColor = .yellow这似乎是为UILabel...设置颜色的正确方法

是唯一可能的方法func setTitleColor(_ color: UIColor?, for state: UIControl.State)吗?我错过了什么吗?

谢谢您的帮助。

标签: iosswiftuibuttonuikitswift5

解决方案


根据苹果文档

不要使用标签对象来设置文本颜色或阴影颜色。相反,使用此类的 setTitleColor( :for:) 和 setTitleShadowColor( :for:) 方法来进行这些更改。要设置标签的实际文本,请使用 setTitle(_:for:) (button.titleLabel.text 不允许您设置文本)。即使按钮尚未显示,titleLabel 属性也会返回一个值。对于系统按钮,该属性的值为 nil。


推荐阅读