Wie kann ich die Schriftgröße und den Schriftnamen eines UILabels ermitteln?

104

Ich habe ein UILabel, für das ich mit Interface Builder eine Schriftgröße und einen Schriftnamen festgelegt habe. Jetzt muss ich die Werte von beiden in meinem ViewController lesen.

Wie kann ich das machen?

Tim
quelle
Diese Methode ist iOS7 veraltet, werfen Sie einen Blick auf diesen Artikel stackoverflow.com/questions/19128797/…
Maria

Antworten:

253

Fügen Sie der .h-Datei Ihres View Controllers eine Eigenschaft hinzu:

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

Verknüpfen Sie das Etikett mit diesem IBOutlet unter "Filialeigentümer" im Interface Builder. Wenn Sie ARC nicht verwenden, stellen Sie sicher, dass Sie es in -dealloc freigeben

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

Um den Namen und die Größe der Schriftart zu erhalten, benötigen Sie lediglich

NSString *fontName = self.label.font.fontName;
CGFloat fontSize = self.label.font.pointSize;
Ned
quelle
3
Funktioniert nicht. Ich kann Text darin schreiben, aber fontName und pointSize sind null.
Tim
Meinen Sie damit, dass Sie den Text des Etiketts programmgesteuert ändern können, aber nicht auf fontName und pointSize zugreifen können? Ich habe die obige Antwort so bearbeitet, dass sie self.label anstelle von label enthält, da ich nicht erwähnt habe, dass eine Instanzvariable für label erstellt wird.
Ned
Stellen Sie außerdem sicher, dass Sie die Beschriftung in Interface Builder mit dem IBOutlet verknüpft haben, das Sie in File's Owner (dem View Controller) erstellt haben.
Ned
2
Ah, ich habe die Verbindung in IB mit dem Eigentümer der Datei vergessen.
Tim
29

Schnell:

var currentFontSize = button.titleLabel?.font.pointSize
Esqarrouth
quelle
15

Der Wert für die Punktgröße ist nicht die Schriftgröße, die in der Eigenschaft UIFont size verwendet wird. Angenommen, Sie setzen die Schriftgröße des Interface Builder auf 14 und drucken die pointSize aus. Sie erhalten nur 11.

ctd
quelle
Scheint jetzt zu arbeiten. Wenn ich die Schriftgröße eines Etiketts im Interface Builder / Storyboard Editor auf 17 myLabel.font.pointSize
setze
1

Sie müssen es an ein UILabel IBOutlet anhängen und dann label.font ...

Guy Ephraim
quelle