UIButton标题文字颜色

Ali*_*Ali 162 iphone objective-c textcolor uibutton ios

我正在设置文字颜色 UIButton

headingButton.titleLabel.textColor = [UIColor colorWithRed:36/255.0 
                                                     green:71/255.0 
                                                      blue:113/255.0 
                                                     alpha:1.0];
Run Code Online (Sandbox Code Playgroud)

它没有改变颜色,我正在使用的另一个代码中使用相同的代码.

Ami*_*ngh 427

使用

Objective-C的

[headingButton setTitleColor:[UIColor colorWithRed:36/255.0 green:71/255.0 blue:113/255.0 alpha:1.0] forState:UIControlStateNormal];
Run Code Online (Sandbox Code Playgroud)

迅速

headingButton.setTitleColor(.black, for: .normal)
Run Code Online (Sandbox Code Playgroud)

  • 原因是当单击按钮或以其他方式更改状态时,按钮中的代码将重置titleLabel的属性以匹配按钮对该状态的内部设置. (7认同)
  • 这很有效.但原始问题中的代码也经常有效.有谁知道为什么标题有时无法回答问题中的代码? (2认同)

Ale*_*Cio 5

我创建了一个自定义类myButton的距离延长UIButton.然后在里面添加Identity Inspector:

在此输入图像描述

在此之后,将按钮类型更改为自定义:

在此输入图像描述

然后你可以设置类似的属性textColor,并UIFont为您UIButton的不同状态:

在此输入图像描述

然后我还在MyButton类中创建了两个方法,当我希望UIButton将其显示为突出显示时,我必须在我的代码中调用它们:

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

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

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


小智 5

在Swift中:

更改标签文本的颜色与更改的颜色完全不同UIButton。若要更改文本颜色,请UIButton使用以下方法:

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