Come posso ottenere la dimensione del carattere e il nome del carattere di un'etichetta UIL?


105

Ho un UILabel che ho impostato una dimensione del carattere e un nome del carattere con Interface Builder. Ora devo leggere i valori di entrambi nel mio ViewController.

Come posso fare questo?


Questo metodo è stato deprecato iOS7, dai un'occhiata a questo articolo stackoverflow.com/questions/19128797/…
Maria

Risposte:


254

Aggiungi una proprietà al file .h del controller di visualizzazione:

@property (nonatomic, retain) IBOutlet UILabel *label;

Collega l'etichetta a questo IBOutlet nelle prese "File's Owner" in Interface Builder. Se non usi ARC, assicurati di rilasciarlo in -dealloc

- (void)dealloc
{
    [self.label release];
    [super dealloc];
}

Quindi per ottenere il nome e la dimensione del carattere tutto ciò di cui hai bisogno è

NSString *fontName = self.label.font.fontName;
CGFloat fontSize = self.label.font.pointSize;

3
Non funziona. Posso scrivere del testo, ma fontName e pointSize sono nulli.
Tim

Vuoi dire che puoi modificare a livello di codice il testo dell'etichetta, ma non puoi accedere a fontName e pointSize? Ho modificato la risposta sopra per includere self.label, anziché solo label, poiché non ho menzionato la creazione di una variabile di istanza per label.
Ned

Inoltre, assicurati di aver collegato l'etichetta in Interface Builder con l'IBOutlet che hai creato in File's Owner (il controller di visualizzazione).
Ned

2
Ah, ho dimenticato la connessione in IB con il proprietario del file.
Tim

29

Swift:

var currentFontSize = button.titleLabel?.font.pointSize

15

Il valore della dimensione dei punti non è la dimensione del carattere utilizzata nella proprietà della dimensione UIFont. Supponiamo che se imposti la dimensione del carattere del generatore di interfacce su 14 e fai una stampa del pointSize, otterrai solo 11.


Sembra funzionare adesso. Se imposto la dimensione del carattere di un'etichetta nel generatore di interfacce / editor di storyboard su 17 ... myLabel.font.pointSizerestituisce 17.
Derek Soike

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.