iOS按钮标题颜色不会改变
问题描述:
我使用以下代码动态创建UIButton,并按照指定样式创建它。iOS按钮标题颜色不会改变
let frame = CGRect(x: 10, y: 6, width: 60, height: 30)
let button = UIButton(frame: frame)
button.setTitleColor(UIColor.blackColor(), forState: UIControlState.Normal)
button.backgroundColor = UIColor.whiteColor()
button.addTarget(self, action: "filterByCategory:", forControlEvents: UIControlEvents.TouchUpInside)
self.categoryScrollView.addSubview(button)
有了这个按钮,我想在点击时切换样式。 以下代码更改背景颜色,但不更改标题颜色。 任何想法为什么标题颜色不会改变?
func filterByCategory(sender:UIButton) {
if sender.backgroundColor != UIColor.blackColor() {
sender.setTitleColor(UIColor.whiteColor(), forState: UIControlState.Selected)
sender.backgroundColor = UIColor.blackColor()
} else {
sender.setTitleColor(UIColor.blackColor(), forState: UIControlState.Normal)
sender.backgroundColor = UIColor.whiteColor()
}
}
答
因为你的按钮会变成回UIControlState.Normal
你触摸后,它成为.Highlighted
,然后.Normal
您应该设置 sender.setTitleColor(UIColor.whiteColor(), forState: UIControlState.Selected)
到
sender.setTitleColor(UIColor.whiteColor(), forState: UIControlState. Normal)
或,只需为所有人设置Ë状态,因为ü没有颜色的支票像
sender.setTitleColor(UIColor.whiteColor(), forState: [.Normal,.Selected,.Highlighted])
*编辑:上述方法无效,可以使用NSAttributedString
代替
if self.loginButton.backgroundColor == UIColor.blackColor() {
let tittle = NSAttributedString(string: "Login", attributes: [NSForegroundColorAttributeName: UIColor.blackColor()])
loginButton.setAttributedTitle(tittle, forState: .Normal)
loginButton.backgroundColor = UIColor.whiteColor()
} else {
let tittle = NSAttributedString(string: "Login", attributes: [NSForegroundColorAttributeName: UIColor.whiteColor()])
loginButton.setAttributedTitle(tittle, forState: .Normal)
loginButton.backgroundColor = UIColor.blackColor()
}
答
为SWIFT 3
button.setTitleColor(.black, for: .normal)
设置中选择到Normal不起作用。我已经尝试为默认和轻击功能设置正常。 –
嗨:D如何设置为所有状态 – Tj3n
刚刚尝试过。同样的事情并没有改变标题颜色。感谢您的输入。 –