2011-07-15 53 views
144

我设置文本颜色UIButtonUIButton的标题文本颜色

headingButton.titleLabel.textColor = [UIColor colorWithRed:36/255.0 
                green:71/255.0 
                 blue:113/255.0 
                alpha:1.0]; 

它不改变颜色相同的代码,我使用的是在它的工作的另一个代码。

+0

可能重复[?我怎样才能改变UIButton的标题颜色(http://stackoverflow.com/questions/2474289/how-can-i-改变 - uibutton-标题颜色) – silentBeep

回答

385

使用

目标C

[headingButton setTitleColor:[UIColor colorWithRed:36/255.0 green:71/255.0 blue:113/255.0 alpha:1.0] forState:UIControlStateNormal]; 

夫特

headingButton.setTitleColor(.black, for: .normal) 
+1

这个工程。但原始问题中的代码也经常起作用。任何人都知道为什么标题只是有时无法回答问题中的代码? – crgt

+6

原因是当单击按钮或以其他方式更改状态时,按钮中的代码将重置titleLabel的属性以匹配按钮对该状态的内部设置。 – psycotica0

+1

苹果的文档声明如下:“不要使用标签对象来设置文本颜色或阴影颜色,而是使用该类的setTitleColor:forState:和setTitleShadowColor:forState:方法来进行这些更改。“虽然没有真正解释”为什么“ – clauswey

3

我创建的自定义类myButton的UIButton延长。然后Identity Inspector里面添加了这个:

enter image description here

在此之后,按钮类型更改为定制

enter image description here

然后你可以设置属性,如textColorUIFontUIButton为不同的状态:

enter image description here

然后,我还创建了内部MyButton类两种方法,我有我的代码里面打电话的时候,我想UIButton所强调的要显示的:

- (void)changeColorAsUnselection{ 
    [self setTitleColor:[UIColor colorFromHexString:acColorGreyDark] 
       forState:UIControlStateNormal & 
         UIControlStateSelected & 
         UIControlStateHighlighted]; 
} 

- (void)changeColorAsSelection{ 
    [self setTitleColor:[UIColor colorFromHexString:acColorYellow] 
       forState:UIControlStateNormal & 
         UIControlStateHighlighted & 
         UIControlStateSelected]; 
} 

您必须设置titleColor正常,亮点并选择UIControlState,因为根据UIControlState的文档,一次可以有多个状态。 如果您不创建这些方法,UIButton将显示选择或突出显示,但它们不会保留在您在UIInterface Builder内部设置的UIColor,因为它们仅用于显示选择的简短显示,而不用于显示选择本身。

3

在斯威夫特:

更改标签文本颜色是不是改变它的UIButton有很大不同。要更改文本颜色为UIButton使用这种方法:

self.headingButton.setTitleColor(UIColor(red: 107.0/255.0, green: 199.0/255.0, blue: 217.0/255.0), forState: UIControlState.Normal)