Auf iOS 5.
Ich habe ein UILabel-Element, das ursprünglich in einer Feder platziert ist. Ich möchte, dass die x-Platzierung fixiert bleibt. Ich möchte, dass es entweder 1 Zeile oder 2 Zeilen dauert. Bei mehr als zwei Zeilen sollte die Einstellung für Zeilenumbrüche verwendet werden, um die Auslassungszeichen anzuzeigen.
Ich verwende numberOfLines
Eigenschaft und -sizeToFit
Wenn ich die numberOfLines
-Eigenschaft von UILabel auf 0 setze, wird es richtig sehen, dass für einige Texte nicht genug Platz ist und sie nach dem Aufruf von -sizeToFit
in eine zweite Zeile umbrechen, aber in dem seltenen Fall, dass die Zeile ist lang genug, um sich auf 3 Zeilen auszudehnen, ich bekomme drei Zeilen, die ich nicht will. Wenn ich numberOfLines
-Eigenschaft auf 2 setze, dehnt es das Ganze tatsächlich auf eine Zeile aus und verlängert meinen ursprünglichen Rahmen, der in der Spitze gesetzt ist, viel breiter.
Die CGRect sind nur für mich da, um Dinge nachträglich berechnen zu können. Wenn Sie also numberOfLines
auf 0 setzen, wird der ursprüngliche Ursprung.x im Rahmen nicht geändert. Langer Text wird in mehrere Zeilen aufgeteilt, aber nicht auf 2 Zeilen beschränkt. Setzen Sie numberOfLines
Eigenschaft auf 2, was, wenn ich die Apple-Dokumente lese
Diese Eigenschaft steuert die maximale Anzahl der zu verwendenden Zeilen, um den Text der Beschriftung in das umgebende Rechteck zu passen. Der Standardwert für diese Eigenschaft ist 1. Um ein maximales Limit zu entfernen und so viele Zeilen wie nötig zu verwenden, setzen Sie den Wert dieser Eigenschaft auf 0.
Es scheint, ich sollte in der Lage sein, dies auf zwei zu setzen und es immer noch funktionieren zu lassen. Ich würde erwarten, dass sich sizeToFit
in einer positiven X- und Y-Richtung ausdehnt, wenn es auf den gesamten Text passt, aber es expandiert in eine negative X-Richtung, wenn numberOfLines
auf einen anderen Wert als 0 gesetzt ist.
ETA: Die "Autosize" -Streben sind auf "oben" und "links" eingestellt, um sie auf ein Minimum x, y zu fixieren.
Danke für jede Einsicht.
Ich hatte ein ähnliches Problem, bei dem -[UILabel sizeToFit]
nicht die maximale Breite respektierte, die ich gesetzt habe, wenn numberOfLines
auf 2 gesetzt war. So habe ich dieses Problem gelöst:
Wie Sie sehen, wollte ich auch eine Mindesthöhe für mein Etikett, da -sizeToFit
das Etikett oft sehr klein macht, aber Sie könnten diesen Code ignorieren, wenn Sie sich nicht um eine Mindesthöhe kümmern. Die "magische Zahl" von 40 für den titleMaxHeight kommt vom Experimentieren und stellt fest, dass ein 2-zeiliges Etikett mit dieser Schriftart wirklich nur 40px benötigt. In diesem Code wird -sizeToFit
hauptsächlich verwendet, um den Text innerhalb der Breite zu belassen und zu bestimmen, ob die Anfangshöhe von 40 reduziert werden kann, wenn wir eine kurze Textzeichenfolge haben.