Come cambiare il carattere di UIButton con Swift


207

Sto cercando di cambiare il carattere di un UIButton usando Swift ...

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

Tuttavia .fontè deprecato e non sono sicuro di come modificare il carattere altrimenti.

Eventuali suggerimenti?

Risposte:


421

Usa titleLabelinvece. La fontproprietà è obsoleta in iOS 3.0. Inoltre non funziona in Objective-C. titleLabelè un'etichetta utilizzata per mostrare il titolo UIButton.

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

Tuttavia, durante l'impostazione del testo del titolo è necessario utilizzare solo setTitle:forControlState:. Non utilizzare titleLabelper impostare direttamente il testo per il titolo.


1
Ragazzi, sapete perché devo "scartare"? la mia etichetta ?? come questo ... myButton.titleLabel! .font = ...
DanMoore

perché titleLabelè una proprietà opzionale. Grazie in precedenza in beta non lo era.
codester

4
Questo metodo mi ha permesso di cambiare il nome / lo stile del mio carattere, ma la modifica della proprietà size non ha fatto differenza.
Dave G,

7
Non è necessario forzare scartare l'etichetta. myButton.titleLabel?.font = ...funzionerà dal momento che se il titolo etichetta è zero sarà solo una no-op
teradyl

1
Perché questo metodo non funziona per la sottoclasse UIbutton personalizzata?
Munib,

69

Per Swift 3.0 :

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

dove "boldSystemFont" e "16" possono essere sostituiti con il carattere e la dimensione personalizzati.


44

La notazione a punti è fantastica (rapida 4.2) 👌

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

@mahasam UIFont è dedotto, questa risposta è la stessa delle altre ma solo senza UIFont (ma perché è dedotta dal compilatore, ma è la stessa) PD: cerco sempre di scrivere in questo modo, ma solo per permetterti sappi che è lo stesso
Pablo Sanchez Gomez,

1
@mahasam: "Dot-notation" è uguale a inferito. E sì È una buona abitudine adottare. E non sono le stesse risposte degli altri, è più conciso delle altre risposte. IMO
eonista,

9

Non è necessario forzare scartare il titolo Etichetta per impostarlo.

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

Dal momento che non stai usando il titolo etichetta qui, puoi semplicemente usarlo facoltativamente e se è zero sarà solo una no-op.

Aggiungerò anche, come dicono altre persone, la proprietà del carattere è obsoleta e assicurerò di usarla setTitle:forControlState:quando si imposta il testo del titolo.



5

Se riscontri problemi di dimensione del carattere (il tuo carattere non risponde alle modifiche delle dimensioni) ...

@codester ha il codice giusto:

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

Tuttavia, la dimensione del mio carattere non stava cambiando. Si scopre che sto chiedendo un carattere che non esisteva ("HelveticaNeue-Regular"). Non stava causando un arresto anomalo, ma sembrava semplicemente ignorare quella dichiarazione di carattere a causa di esso. Una volta modificato il carattere in qualcosa che esiste, il rendering in "size: x" è stato visualizzato.


5

possiamo usare diversi tipi di caratteri di sistema come di seguito

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

e il tuo carattere personalizzato come di seguito

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

4

Dovresti passare attraverso la titleLabelproprietà.

button.titleLabel.font

La fontproprietà è stata deprecata da iOS 3.0.


4

Dai un'occhiata qui .

Dovresti invece impostare il carattere del nome etichetta del pulsante.

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

4

Funziona in Swift 3.0:

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

4

Se stai impostando AttributedString sul pulsante UIB, puoi fare quanto segue.

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

4

Se è necessario modificare solo le dimensioni ( Swift 4.0 ):

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

2

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

  • Se si desidera utilizzare il carattere defaul della propria famiglia, utilizzare ad esempio: "HelveticaNeue"
  • Se si desidera specificare il carattere familiare, utilizzare ad esempio: "HelveticaNeue-Bold"

1

In questo modo non funziona ora:

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

Questo funziona:

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

0

questo lavoro per me, grazie. Voglio cambiare solo la dimensione del testo, non cambiare il nome del carattere.

var fontSizeButtonBig:Int = 30

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

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.