Comment puis-je obtenir la taille et le nom de la police d'un UILabel?


105

J'ai un UILabel dont j'ai défini une taille de police et un nom de police avec Interface Builder. Maintenant, je dois lire les valeurs des deux dans mon ViewController.

Comment puis-je faire ceci?


Cette méthode est obsolète iOS7, jetez un œil à cet article stackoverflow.com/questions/19128797/...
Maria

Réponses:


254

Ajoutez une propriété au fichier .h de votre contrôleur de vue:

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

Liez l'étiquette à cet IBOutlet sous les points de vente «File's Owner» dans Interface Builder. Si vous n'utilisez pas ARC, assurez-vous de le libérer dans -dealloc

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

Ensuite, pour obtenir le nom et la taille de la police, il vous suffit de

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

3
Ne marche pas. Je peux y écrire du texte, mais le fontName et le pointSize sont nuls.
Tim

Voulez-vous dire que vous pouvez modifier par programme le texte de l'étiquette, mais que vous ne pouvez pas accéder à fontName et pointSize? J'ai modifié la réponse ci-dessus pour inclure self.label, au lieu de simplement label, car je n'ai pas mentionné la création d'une variable d'instance pour label.
Ned le

Assurez-vous également que vous avez connecté l'étiquette dans Interface Builder avec l'IBOutlet que vous avez créé dans File's Owner (le contrôleur de vue).
Ned

2
Ah, j'ai oublié la connexion dans IB avec le propriétaire du fichier.
Tim

29

Rapide:

var currentFontSize = button.titleLabel?.font.pointSize

15

La valeur Pointsize n'est pas la taille de la police utilisée dans la propriété de taille UIFont. Disons que si vous définissez la taille de la police du générateur d'interface sur 14 et que vous imprimez le pointSize, vous n'obtiendrez que 11.


Semble fonctionner maintenant. Si je règle la taille de police d'une étiquette dans le générateur d'interface / éditeur de storyboard sur 17 ... myLabel.font.pointSizerenvoie 17.
Derek Soike

1

vous devez l'attacher à un IBOutlet UILabel, puis à label.font ...

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.