我正在尝试在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
}
但它只会将背景颜色更改为黄色。
这是我的故事板配置(我不知道它是否与此目的相关):
我知道与UIButton
的连接运行良好,因为背景色正在改变,但是,
为什么我无法更改其文字颜色?我错过了什么吗?
提前致谢!
答案 0 :(得分:11)
设置tintColor
仅适用于buttonType = .custom
。当您使用UIButton()
创建按钮时,默认buttonType
将为.system
,由于具有特定{{3}的配置,它将覆盖您的全局titleLabel
和tintColor
}
如果您希望系统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