Ich möchte sicherstellen, dass der Schaltflächentext in einen UIButton passt, während der UIButton eine feste Größe hat.
Natürlich kann ich auf das titleLabel des UIButton zugreifen. In einem Label würde ich autoshrink
auf den minimalen Schriftgrad einstellen, der scheinbar entspricht
self.myButton.titleLabel.adjustsFontSizeToFitWidth = YES;
, verhält sich jedoch nicht wirklich gleich, da der Text nur horizontal und nicht vertikal in die Begrenzungen passt, wodurch die Schriftgröße nicht geändert wird.
Wie kann ich die Schriftgröße eines Labels tatsächlich programmgesteuert anpassen, damit der Text in die Labelgrenzen passt (wie in Goal im Bild unten gezeigt)?
Ich habe es schon versucht
self.myButton.titleLabel.numberOfLines = 0;
self.myButton.titleLabel.minimumScaleFactor = 0.5f;
ohne Erfolg endete es immer wie in adjustsFontSizeToFitWidth
auf der linken Seite des obigen Bildes.
Edit: Die Lösung muss auch ios7-konform sein
self.mybutton.titleLabel.minimumScaleFactor = 0.5f;
self.mybutton.titleLabel.numberOfLines = 0; <-- Or to desired number of lines
self.mybutton.titleLabel.adjustsFontSizeToFitWidth = YES;
... hat den Trick gemacht, nachdem layoutIfNeeded in viewDidLoad Wie sich herausgestellt hat, müssen alle diese Parameter so eingestellt werden, dass sie die Schriftgröße tatsächlich anpassen und nicht nur in den Rahmen passen.
mybutton.titleLabel?.minimumScaleFactor = 0.5
mybutton.titleLabel?.numberOfLines = 0 <-- Or to desired number of lines
mybutton.titleLabel?.adjustsFontSizeToFitWidth = true
Sie können im Interface Builder auch ein benutzerdefiniertes Laufzeitattribut für die Schaltfläche wo festlegen
titleLabel.adjustsFontSizeToFitWidth = true
Aktualisierter Code für Swift 3.0:
yourButton.titleLabel?.minimumScaleFactor = 0.5
yourButton.titleLabel?.numberOfLines = 0
yourButton.titleLabel?.adjustsFontSizeToFitWidth = true
Versuchen Sie die folgende Methode aufzurufen.
button.titleLabel?.baselineAdjustment = UIBaselineAdjustment.AlignCenters
versuche dies:
[myButton setFont:[[myButton font] fontWithSize:--originalButtonFontSize]];
textWidth = [text sizeWithFont:[myButton font]].width;
}
In Xcode-> Storyboard öffnen-> Gehe zu Attribute-Inspektor-> Steuerung-> Ausrichtung-> Wählen Sie die zweite in horizontaler und vertikaler Richtung.
oder
YourButton.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;