web-dev-qa-db-fra.com

Comment changer la police de UIButton avec Swift

J'essaie de changer la police d'un UIButton en utilisant Swift ...

myButton.font = UIFont(name: "...", 10)

Cependant .font est obsolète et je ne sais pas comment changer la police autrement.

Aucune suggestion?

173
Stephen Fox

Utilisez titleLabel à la place. La propriété font est obsolète dans iOS 3.0. Cela ne fonctionne pas non plus dans Objective-C. titleLabel est une étiquette utilisée pour afficher le titre sur UIButton.

myButton.titleLabel?.font =  UIFont(name: YourfontName, size: 20)

Cependant, lors de la définition du titre, vous ne devez utiliser que setTitle:forControlState:. N'utilisez pas titleLabel pour définir directement le texte d'un titre.

361
codester

Pour Swift 3.:

button.titleLabel?.font = UIFont.boldSystemFont(ofSize: 16)

où "boldSystemFont" et "16" peuvent être remplacés par votre police et votre taille personnalisées.

63
ruthless_g

La notation par points est géniale (Swift 4.2) ????

btn.titleLabel?.font = .systemFont(ofSize: 12)
30
eonist

Vous n'avez pas besoin de forcer le déballage de titleLabel pour le définir.

myButton.titleLabel?.font = UIFont(name: YourfontName, size: 20)

Puisque vous n'utilisez pas le titleLabel ici, vous pouvez simplement l'utiliser de manière facultative et s'il est nul, il s'agira d'un non-op.

J'ajouterai également, comme d'autres personnes le disent, que la propriété de police est obsolète et assurez-vous d'utiliser setTitle:forControlState: lors de la définition du texte du titre.

9
teradyl

De la documentation :

La police utilisée pour afficher du texte sur le bouton. ( Déconseillé dans iOS 3.0 . Utilisez plutôt la propriété font de titleLabel .)

6
zneak

Si vous rencontrez des problèmes de taille de police (votre police ne répond pas aux changements de taille) ...

@codester a le bon code:

myButton.titleLabel!.font =  UIFont(name: YourfontName, size: 20)

Cependant, ma taille de police ne changeait pas. Il s'avère que je demande une police qui n'existe pas ("HelveticaNeue-Regular"). Cela ne causait pas de plantage, mais semblait ignorer cette déclaration de police à cause de cela. Une fois que j'ai changé la police pour quelque chose qui existe, les modifications en "size: x" ont été rendues.

5
Dave G

Cela fonctionne dans Swift 3.0:

btn.titleLabel?.font = UIFont(name:"Times New Roman", size: 20) 
4
ram

Jetez un oeil ici .

Vous devez plutôt définir la police de la balise titleLabel du bouton.

myButton.titleLabel!.font = UIFont(name: "...", 10)
4
Connor

Vous devriez passer par la propriété titleLabel.

button.titleLabel.font

La propriété font est obsolète depuis iOS 3.0.

4
Chris Wagner

nous pouvons utiliser différents types de polices système comme ci-dessous

myButton.titleLabel?.font = UIFont.boldSystemFont(ofSize: 17)
myButton.titleLabel?.font = UIFont.italicSystemFont(ofSize:UIFont.smallSystemFontSize)
myButton.titleLabel?.font = UIFont.boldSystemFont(ofSize: UIFont.buttonFontSize)

et votre police personnalisée comme ci-dessous

    myButton.titleLabel?.font = UIFont(name: "Helvetica", size:12)
4
Sultan Ali

Si vous ne devez modifier que la taille (Swift 4.):

button.titleLabel?.font = button.titleLabel?.font.withSize(12)
3
Karbaman

Si vous définissez AttributedString sur UIButton, vous pouvez procéder comme suit.

let attributedText = NSAttributedString(string: "Hello", attributes: [NSAttributedStringKey.font: UIFont(name: "Calibri", size: 19)])
okayButton.setAttributedTitle(attributedText, for: .normal)
3
Anirudha Mahale

Cette façon ne fonctionne pas maintenant:

 btn.titleLabel?.font = UIFont(name: "Helvetica", size:12)

Cela marche:

 btn.titleLabel?.font = UIFont.init(name: "Helvetica", size:12)
1
RealNmae

Exemple: button.titleLabel?.font = UIFont(name: "HelveticaNeue-Bold", size: 12)

  • Si vous souhaitez utiliser la police defaul de sa propre famille, utilisez par exemple: "HelveticaNeue"
  • Si vous souhaitez spécifier une police de famille, utilisez par exemple: "HelveticaNeue-Bold"
1
janaz

cela fonctionne pour moi, merci. Je veux changer la taille du texte, mais pas le nom de la police.

var fontSizeButtonBig:Int = 30

btnMenu9.titleLabel? .font = .systemFont (ofSize: CGFloat (fontSizeButtonBig))

0
mahasam