Ich habe folgenden Code:
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
button.frame = CGRectMake(0.0, 0.0, 25, 25);
[[button layer] setCornerRadius:5.0f];
[[button layer] setMasksToBounds:YES];
[[button layer] setBackgroundColor:[[UIColor redColor] CGColor]];
[button.titleLabel setFrame:CGRectMake(0,0, 25, 25)];
[button setTitle:[NSString stringWithFormat:@"%@", [[topics objectAtIndex:indexPath.row] unread]] forState:UIControlStateNormal];
Das Problem ist, dass wenn die Zeichenfolge im Text nicht lang ist, sie gut angezeigt wird (1-2 Ziffern). Wenn es jedoch ziemlich lang ist (3 ++ Ziffer), sehe ich nur einen roten Knopf ohne Text. Wie stelle ich das ein?
Das glaube ich nicht:
[button.titleLabel setAdjustsFontSizeToFitWidth:YES];
macht den Job, richtig?
ios
objective-c
Stollen
quelle
quelle
titleButton.setContentCompressionResistancePriority(.defaultLow, for: .horizontal)
Antworten:
Versuche dies:
Ich bin nicht sicher, warum dies den Trick macht, aber es tut :)
quelle
numberOfLines
auf 0 geändertsollte die Arbeit selbst erledigen, wenn Sie das automatische Layout verwenden und eine Einschränkung für die Breite der Schaltfläche festgelegt haben.
Die anderen Optionen (minimaler Skalierungsfaktor, Anzahl der Zeilen usw.) können weiterhin verwendet werden, um weitere Anpassungen an Ihre Anforderungen vorzunehmen, sind jedoch nicht erforderlich.
quelle
Die Antwort von EliBud funktioniert unter iOS 8 nicht. Ich habe eine Lösung gefunden, die unter iOS 8 funktioniert. Nachfolgend finden Sie einen schnellen Code:
Sie können mit dem Label? .LineBreakMode spielen, da ich festgestellt habe, dass die Ergebnisse für verschiedene Unterbrechungsmodi variieren.
quelle
In letzter Zeit scheint dies für mich zu funktionieren
quelle
iOS 10.3-Lösung basierend auf den anderen Antworten hier:
baselineAdjustment
Noch niemand erwähnt ; Ich brauchte es, weil die Tastenbeschriftung nach demadjustsFontSizeToFitWidth
Wirksamwerden vertikal falsch ausgerichtet wird. ApplesbaselineAdjustment
Dokumentation:FWIW, ich konnte das Etikett nie perfekt ausrichten.
quelle
adjustsFontSizeToFitWidth
funktionierte nicht für mich, bis ich in Interface Builder eine Breitenbeschränkung für meine Schaltfläche festgelegt habe.Durch das Festlegen der Einschränkung wurde verhindert, dass die Schaltfläche größer wurde, und daher wurde nicht erkannt, dass der Text verkleinert werden musste.
quelle
Swift 4 Erweiterung
quelle
Xamarin.iOS-Lösung
Am Ende habe ich die Schriftgröße festgelegt, um sicherzustellen, dass die Schrift "groß" ist, bevor das System die Größe anpasst.
quelle
basierend auf Nik Kovs Antwort:
quelle
Die folgende Lösung hat bei mir funktioniert:
In der Entwicklerdokumentation wird diese Eigenschaft wie folgt erläutert:
quelle
In iOS 13.1 mit Swift 5 musste ich
contentEdgeInsets
auch die Polster anpassen.quelle