So ändern Sie die Schriftart von UIButton mit Swift


207

Ich versuche, die Schriftart eines UIButton mit Swift zu ändern ...

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

Ist .fontjedoch veraltet und ich bin nicht sicher, wie ich die Schriftart anders ändern soll.

Irgendwelche Vorschläge?

Antworten:


421

Verwenden Sie titleLabelstattdessen. Die fontEigenschaft ist in iOS 3.0 veraltet. Es funktioniert auch nicht in Objective-C. titleLabelist das Etikett, auf dem der Titel angezeigt wird UIButton.

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

Beim Festlegen von Titeltext sollten Sie jedoch nur verwenden setTitle:forControlState:. Verwenden Sie diese Option nicht titleLabel, um Text direkt für den Titel festzulegen.


1
Weißt du, warum ich auspacken muss? mein Label? so ... myButton.titleLabel! .font = ...
DanMoore

Dies titleLabelist eine optionale Eigenschaft. Vielen Dank, dass dies zuvor in der Beta nicht der Fall war.
Codester

4
Mit dieser Methode konnte ich meinen Schriftnamen / Stil ändern, aber das Ändern der Eigenschaft size machte keinen Unterschied.
Dave G

7
Sie müssen das Etikett nicht zwangsweise auspacken. myButton.titleLabel?.font = ...wird seit funktionieren , wenn Titlelabel Null ist es nur einen no-op sein wird
teradyl

1
Warum funktioniert diese Methode nicht für benutzerdefinierte UIbutton-Unterklassen?
Munib

69

Für Swift 3.0 :

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

Dabei können "boldSystemFont" und "16" durch Ihre benutzerdefinierte Schriftart und Größe ersetzt werden.


44

Die Punktnotation ist fantastisch (schnell 4.2) 👌

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

@mahasam UIFont wird abgeleitet, diese Antwort ist die gleiche wie die anderen, aber nur ohne UIFont (aber weil es vom Compiler abgeleitet wird, aber es ist das gleiche) PD: Ich versuche immer, auf diese Weise zu schreiben, aber nur um Sie zu lassen weiß, dass das das gleiche ist
Pablo Sanchez Gomez

1
@ Mahasam: "Punktnotation" ist das gleiche wie abgeleitet. Und ja, es ist eine gute Angewohnheit, sich zu verabschieden. Und es sind nicht die gleichen Antworten wie bei anderen, da es prägnanter ist als andere Antworten. IMO
Eonist

9

Sie müssen das titleLabel nicht zwangsweise auspacken, um es festzulegen.

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

Da Sie das titleLabel hier nicht verwenden, können Sie es optional verwenden. Wenn es gleich Null ist, ist es nur ein No-Op.

Ich werde auch hinzufügen, wie andere Leute sagen, dass die Schriftart-Eigenschaft veraltet ist, und stellen Sie sicher, dass Sie sie setTitle:forControlState:beim Festlegen des Titeltextes verwenden.


7

Aus der Dokumentation :

Die Schriftart, mit der Text auf der Schaltfläche angezeigt wird. ( In iOS 3.0 veraltet . Verwenden Sie stattdessen die fontEigenschaft von titleLabel.)


5

Wenn Sie Probleme mit der Schriftgröße haben (Ihre Schrift reagiert nicht auf Größenänderungen) ...

@codester hat den richtigen Code:

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

Meine Schriftgröße änderte sich jedoch nicht. Es stellt sich heraus, dass ich nach einer nicht existierenden Schriftart frage ("HelveticaNeue-Regular"). Es verursachte keinen Absturz, schien diese Schriftanweisung jedoch nur zu ignorieren. Nachdem ich die Schriftart in eine vorhandene Schriftart geändert hatte, wurden Änderungen an "size: x" gerendert.


5

Wir können verschiedene Arten von Systemschriftarten wie unten verwenden

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

und Ihre benutzerdefinierte Schriftart wie unten

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

4

Sie sollten durch das titleLabelGrundstück gehen.

button.titleLabel.font

Die fontEigenschaft ist seit iOS 3.0 veraltet.


4

Schauen Sie hier .

Sie sollten stattdessen die Schriftart des titleLabel der Schaltfläche festlegen.

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

4

Dies funktioniert in Swift 3.0:

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

4

Wenn Sie AttributedString auf den UIButton setzen, können Sie Folgendes tun.

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

4

Wenn Sie nur die Größe ändern müssen ( Swift 4.0 ):

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

2

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

  • Wenn Sie eine Standardschrift aus der eigenen Familie verwenden möchten, verwenden Sie beispielsweise: "HelveticaNeue"
  • Wenn Sie eine Familienschrift angeben möchten, verwenden Sie beispielsweise: "HelveticaNeue-Bold"

1

Dieser Weg funktioniert jetzt nicht:

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

Das funktioniert:

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

0

diese Arbeit für mich, danke. Ich möchte nur die Textgröße ändern, nicht den Schriftnamen.

var fontSizeButtonBig:Int = 30

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

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.