我有这个自定义UIButton类,但是我无法为不同的状态(正常,禁用,突出显示)更改titleColor。我已经尝试使用titleColorForState
来更改它,但它没有任何效果。只有似乎有用的东西是tintColor
,但在不同的状态下,颜色会消失,不会改变。
以下是我的自定义类的代码:
import UIKit
class UIDefaultButton: UIButton {
var normalBackground: UIColor { get { return UIColor.hrColors().whiteColor() } }
var highlightedBackground: UIColor { get { return UIColor.hrColors().lightGreyColor() } }
var disabledBackground: UIColor { get { return UIColor.hrColors().lightGreyColor() } }
var normalTextColor: UIColor { get { return UIColor.hrColors().darkGreyColor() } }
var highlightedTextColor: UIColor { get { return UIColor.hrColors().darkGreyColor()} }
var disabledTextColor: UIColor { get { return UIColor.hrColors().greyColor() } }
var cornerRadius: CGFloat { get { return 5.0 } }
var borderWidth: CGFloat { get { return 1.0 } }
var borderColor: UIColor { get { return UIColor.hrColors().greyColor() } }
var hasBorder: Bool { get { return true } }
override var highlighted: Bool {
didSet {
switch (highlighted) {
case true:
backgroundColor = highlightedBackground
case false:
backgroundColor = normalBackground
}
}
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
self.layer.cornerRadius = cornerRadius
if (self.hasBorder) {
self.layer.borderColor = borderColor.CGColor
self.layer.borderWidth = borderWidth
}
self.tintColor = normalTextColor
self.backgroundColor = normalBackground
}
override func titleColorForState(state: UIControlState) -> UIColor? {
switch (state) {
case UIControlState.Normal:
return normalTextColor
case UIControlState.Highlighted:
return highlightedTextColor
case UIControlState.Disabled:
return disabledTextColor
default:
return normalTextColor
}
}
}
注意:UIColor.hrColor()
是我自己的自定义颜色扩展
知道为什么它不起作用吗?
答案 0 :(得分:0)
尝试这样的事情
yourButton.setTitleTextAttributes([NSForegroundColorAttributeName : UIColor.hrColor()], forState: .Normal)
确保您有按钮的IBOutlet并将此代码放入viewDidLoad()
如果这适合你,请给+1!