Comment définir la couleur du texte du titre d'UIButton?


124

J'ai essayé de changer les couleurs du texte pour un bouton, mais il reste toujours blanc.

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)

J'ai aussi essayé de changer le rouge, le noir, le bleu, mais rien ne se passe.

Réponses:


282

Vous devez utiliser func setTitleColor(_ color: UIColor?, for state: UIControlState)la même manière que vous définissez le texte du titre réel. Docs

isbeauty.setTitleColor(UIColorFromRGB("F21B3F"), for: .normal)

pour des raisons de lisibilité, je préfère ne pas qualifier mes énumérations, mais c'est juste moi
styler1972

@ styler1972 Je préfère cela aussi - apparemment, je n'étais pas au courant de cela lorsque j'ai initialement écrit la réponse
luk2302

1
isbeauty.setTitleColor (UIColorFromRGB (rgbValue: "F21B3F"), pour: .Normal)
Arunabh Das

3
Je crois qu'à partir de xcode 9, c'est maintenant ".normal" au lieu de ".Normal"
Buddhisthead

4
mon code: yourButtonName.setTitleColor (UIColor.red, for: .normal)
devgrg

111

Solution d' interface utilisateur Swift

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

Swift 3, Swift 4, Swift 5

pour améliorer les commentaires. Cela devrait fonctionner:

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

10

Exemple de réglage de la couleur du titre du bouton

btnDone.setTitleColor(.black, for: .normal)

8
Quelle est la différence entre ma réponse et la vôtre?
Vyacheslav

3

C'est une réponse compatible rapide 5. Si vous souhaitez utiliser l'une des couleurs intégrées, vous pouvez simplement utiliser

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

Si vous voulez des couleurs personnalisées, créez d'abord une extension pour un UIColor comme ci-dessous.

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

Ensuite, utilisez-le pour votre bouton comme ci-dessous.

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

Conseil: vous pouvez utiliser cette méthode pour stocker des couleurs personnalisées à partir du code couleur rgba et les réutiliser dans toute votre application.


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

Paramètres :

couleur:
la couleur du titre à utiliser pour l'état spécifié.

état:
état qui utilise la couleur spécifiée. Les valeurs possibles sont décrites dans UIControl.State.

Échantillon :

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

0

en vous référant aux boutons radio, vous pouvez également le faire avec le contrôle segmenté comme suit:

étape 1: faites glisser un contrôle segmenté vers votre vue dans l'inspecteur d'attributs changer le titre des deux segments, par exemple "Homme" et "Femme"

étape 2: créer un point de vente et une action pour celui-ci dans le code

étape 3: créer une variable pour une utilisation future pour contenir les données de choix

dans le code, procédez comme suit:

@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)
    }
}
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.