Cor do texto do título do UIButton

168

Estou definindo a cor do texto para UIButton

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

Não está mudando de cor no mesmo código que estou usando em outro código que está funcionando.

Todos
fonte
possível duplicata de Como posso alterar a cor do título UIButton?
SKhan 29/05

Respostas:

438

usar

Objetivo-C

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

Rápido

headingButton.setTitleColor(.black, for: .normal)
Amit Singh
fonte
2
isso funciona. mas o código na pergunta original também costuma funcionar. alguém sabe por que o título às vezes falha em responder ao código da pergunta?
fácil
7
O motivo é que, quando o botão é clicado ou muda de estado, o código no botão redefine as propriedades do titleLabel para corresponder às configurações internas que o botão possui para esse estado.
usar o seguinte código
1
a documentação da apple indica o seguinte: "Não use o objeto label para definir a cor do texto ou a cor da sombra. Em vez disso, use os métodos setTitleColor: forState: e setTitleShadowColor: forState: dessa classe para fazer essas alterações." Nenhuma explicação real do "porquê".
clauswey
O MAIS IMPORTANTE é que, quando você define uma cor para UIControlStateNormal, não é necessário defini-la para todos os outros estados (se você deseja que o botão tenha a mesma aparência quando pressionado).
Drpawelo 11/12/15
como alterar a cor do texto do botão globalmente no delegado do aplicativo. Talvez usando UIButton.appearance (). SetTitleColor?
Awais Fayyaz
5

Eu criei uma classe personalizada MyButton estendida de UIButton. Em seguida, adicione isso dentro do Identity Inspector:

insira a descrição da imagem aqui

Depois disso, altere o tipo de botão para Personalizado :

insira a descrição da imagem aqui

Em seguida, você pode definir atributos como textColore UIFontpara você UIButtonpara os diferentes estados:

insira a descrição da imagem aqui

Também criei dois métodos dentro da MyButtonclasse que devo chamar dentro do meu código quando quero que um UIButtonseja exibido como destacado:

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

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

Você deve definir o titleColornormal, realçado e selecionado, UIControlStatepois pode haver mais de um estado por vez, de acordo com a documentação de UIControlState. Se você não criar esses métodos, UIButtoneles exibirão a seleção ou o destaque, mas eles não permanecerão na UIColorsua configuração dentro do, UIInterface Builderporque eles estão disponíveis apenas para uma exibição curta de uma seleção, não para exibir a própria seleção.

Alex Cio
fonte
O último trecho de código não deve ser usado em |vez de &?
130e13a 26/10/19
5

Em Swift:

Alterar a cor do texto do rótulo é bem diferente de alterá-lo para a UIButton. Para alterar a cor do texto para UIButtonusar este método:

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

versão rápida 5:

Usando cores incorporadas padrão:

  1. button.setTitleColor(UIColor.green, for: .normal)

OU

Você pode usar sua cor personalizada usando o método RGB:

  1. button.setTitleColor(UIColor(displayP3Red: 0.0/255.0, green: 180.0/255.0, blue: 2.0/255.0, alpha: 1.0), for: .normal)
NickCoder
fonte