Como definir a cor do texto do título do UIButton?

124

Tentei alterar as cores do texto de um botão, mas ele ainda permanece branco.

isbeauty = UIButton()
isbeauty.setTitle("Buy", forState: UIControlState.Normal)
isbeauty.titleLabel?.textColor = UIColorFromRGB("F21B3F")
isbeauty.titleLabel!.font = UIFont(name: "AppleSDGothicNeo-Thin" , size: 25)
isbeauty.backgroundColor = UIColor.clearColor()
isbeauty.layer.cornerRadius = 5
isbeauty.layer.borderWidth = 1
isbeauty.layer.borderColor = UIColorFromRGB("F21B3F").CGColor
isbeauty.frame = CGRectMake(300, 134, 55, 26)
isbeauty.addTarget(self,action: "first:", forControlEvents: UIControlEvents.TouchUpInside)
self.view.addSubview(isbeauty)

Também tentei mudar para vermelho, preto, azul, mas nada está acontecendo.

coolmac
fonte

Respostas:

280

Você deve usar func setTitleColor(_ color: UIColor?, for state: UIControlState)a mesma maneira que define o texto do título real. Docs

isbeauty.setTitleColor(UIColorFromRGB("F21B3F"), for: .normal)
luk2302
fonte
para facilitar a leitura, prefiro não qualificar meus enums, mas isso sou só eu
estilista 1972
@ styler1972 Eu também prefiro isso - aparentemente eu não sabia disso quando escrevi a resposta inicialmente
luk2302
1
isbeauty.setTitleColor (UIColorFromRGB (rgbValue: "F21B3F"), para: .Normal)
Arunabh Das
3
Eu acredito que a partir do xcode 9, agora é ".normal" em vez de ".Normal"
Buddhisthead
4
meu código: yourButtonName.setTitleColor (UIColor.red, for: .normal)
devgrg
111

Solução de IU Swift

Button(action: {}) {
            Text("Button")
        }.foregroundColor(Color(red: 1.0, green: 0.0, blue: 0.0))

Swift 3, Swift 4, Swift 5

para melhorar os comentários. Isso deve funcionar:

button.setTitleColor(.red, for: .normal)
Vyacheslav
fonte
10

Exemplo na configuração da cor do título do botão

btnDone.setTitleColor(.black, for: .normal)
Handiansom
fonte
8
Qual é a diferença entre a minha resposta e a sua?
Vyacheslav,
3

Esta é a resposta compatível do Swift 5. Se você quiser usar uma das cores integradas, basta usar

button.setTitleColor(.red, for: .normal)

Se você quiser algumas cores personalizadas, crie primeiro uma extensão para UIColor conforme mostrado abaixo.

import UIKit
extension UIColor {
    static var themeMoreButton = UIColor.init(red: 53/255, green: 150/255, blue: 36/255, alpha: 1)
}

Em seguida, use-o para o seu botão conforme abaixo.

button.setTitleColor(UIColor.themeMoreButton, for: .normal)

Dica: Você pode usar este método para armazenar cores personalizadas do código de cores rgba e reutilizá-lo em todo o aplicativo.

Jay Mayu
fonte
2
func setTitleColor(_ color: UIColor?, 
               for state: UIControl.State)

Parâmetros :

cor:
a cor do título a ser usado no estado especificado.

estado:
o estado que usa a cor especificada. Os valores possíveis são descritos em UIControl.State.

Amostra :

let MyButton = UIButton()
MyButton.setTitle("Click Me..!", for: .normal)
MyButton.setTitleColor(.green, for: .normal)
Ramprasath Selvam
fonte
0

referindo-se aos botões de opção, você também pode fazer isso com o controle segmentado da seguinte forma:

passo 1: arraste um controle segmentado para sua visualização no inspetor de atributos, altere o título dos dois segmentos, por exemplo "Masculino" e "Feminino"

passo 2: crie uma saída e uma ação para ela no código

passo 3: crie uma variável para uso futuro para conter os dados de escolha

no código, faça o seguinte:

@IBOutlet weak var genderSeg: UISegmentedControl!

var genderPick : String = ""


 @IBAction func segAction(_ sender: Any) {

    if genderSeg.selectedSegmentIndex == 0 {
         genderPick = "Male"
        print(genderPick)
    } else if genderSeg.selectedSegmentIndex == 1 {
        genderPick = "Female"
          print(genderPick)
    }
}
Tímido Attoun
fonte