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?

Tim
la source
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;
Ned
la source
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
Esqarrouth
la source
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.

ctd
la source
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 ...

Guy Ephraim
la source