更改自定义 UIButton 的 TitleColor (iOS 8 + swift)
Posted
技术标签:
【中文标题】更改自定义 UIButton 的 TitleColor (iOS 8 + swift)【英文标题】:Change TitleColor for custom UIButton (iOS 8 + swift) 【发布时间】:2015-11-10 01:44:25 【问题描述】:我有这个自定义 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()
是我自己的自定义颜色扩展
知道为什么它不起作用吗?
【问题讨论】:
【参考方案1】:试试这样的
yourButton.setTitleTextAttributes([NSForegroundColorAttributeName : UIColor.hrColor()], forState: .Normal)
确保您有一个按钮的 IBOutlet 并将此代码放在 viewDidLoad() 中
如果这对你有用,请给 +1!
【讨论】:
我需要它在自定义类中。否则我必须为每个视图中的每个按钮都这样做。 @shikhar.ja 是正确的。这是唯一的方法。这就是我所做的。不需要很长时间......只是一些复制和粘贴。您是否也介意看看发布的问题,看看您是否知道如何解决它? 我仍然想找出一个通用的方法来做到这一点,所以我暂时把这个问题放在一边。一旦我弄清楚了,我会回来告诉你我的解决方案。以上是关于更改自定义 UIButton 的 TitleColor (iOS 8 + swift)的主要内容,如果未能解决你的问题,请参考以下文章
iOS:自定义按钮(UIButton 的子类) - 无法更改边框属性