为什么我无法更改UIButton文本颜色?

时间:2016-12-01 14:47:20

标签: ios swift uitableview uibutton swift3

我正在尝试在Swift 3上以编程方式更改UIButton的文本颜色。

我已经在其他按钮中完成了,但整个项目中只有一个我无法改变颜色,我找不到原因(我可以从故事板手动更改它但我需要以编程方式更改其颜色)。要更改其他按钮中的文本颜色,我已完成以下操作:

customButton.tintColor = UIColor.red

它运作良好。除了我UIButton中的一个UITableViewCell,我无法以编程方式将文本颜色更改为UIButton。我可以手动更改它(使用故事板),但是。

这是我对自定义UITableViewCell的代码:

@IBOutlet weak var customButton: UIButton!

override func awakeFromNib() {
    super.awakeFromNib()

    customButton.tintColor = UIColor.blue
    customButton.backgroundColor = UIColor.yellow
}

但它只会将背景颜色更改为黄色。

这是我的故事板配置(我不知道它是否与此目的相关):

enter image description here

我知道与UIButton的连接运行良好,因为背景色正在改变,但是,

为什么我无法更改其文字颜色?我错过了什么吗?

提前致谢!

3 个答案:

答案 0 :(得分:11)

问题

设置tintColor仅适用于buttonType = .custom。当您使用UIButton()创建按钮时,默认buttonType将为.system,由于具有特定{{3}的配置,它将覆盖您的全局titleLabeltintColor }

解决方案

如果您希望系统UIButton的行为在按下按钮时淡化titleLabel,则需要为每个状态设置titleColor,如下所示:

let button = UIButton()
button.setTitleColor(UIColor.red, for: .normal)

否则,您可以使用.custom并直接设置tintColor

let button = UIButton(type: .custom)
button.tintColor = UIColor.red

答案 1 :(得分:1)

您可以直接更改其标题:

let button = UIButton()
button.titleLabel?.textColor = .red

答案 2 :(得分:1)

如果您想使用TintColor作为标题颜色,则类型应为System而不是Custom