Wie kann UILabel Höhe dynamisch berechnet werden?
Möchte ich berechnen, die Anzahl der Linien und Höhe der UILabel dynamisch aus den gegebenen text.
InformationsquelleAutor der Frage Hitesh | 2011-08-24
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen, diese
oder
oder
Durch die Verwendung von Kategorien, Erstellen Sie Einfach die Kategorie, die Klasse als
UILabel+UILabelDynamicHeight.h
UILabel+UILabelDynamicHeight.m
Nicht mehr Spannung über die Berechnung der Höhe. Bitte überprüfen Sie die unten Umsetzung.
Updates für iOS7 & Oben,iOS-7 unten : Dynamisch berechnen Sie die UILabel Höhe
UILabel+UILabelDynamicHeight.h
UILabel+UILabelDynamicHeight.m
InformationsquelleAutor der Antwort Vijay-Apple-Dev.blogspot.com
Aufrufen
-sizeToFit
auf UILabel-Instanz wird automatisch die Größe passt mit dem text, den er zeigt, ist keine Berechnung erforderlich. Wenn Sie die Größe, die Sie es bekommen können von der label - frame-Eigenschaft nach.InformationsquelleAutor der Antwort Filip Radelic
Zusammenfassen, können Sie berechnen die Höhe eines Etiketts mithilfe der Zeichenfolge und ruft
boundingRectWithSize
. Sie müssen diefont
als Attribut, und gehören.usesLineFragmentOrigin
für mehrzeilige Beschriftungen.Einige Erweiterungen, genau das zu tun:
Swift Version:
Objective-C-Version:
UILabel+Utility.h
UILabel+Utility.m
InformationsquelleAutor der Antwort kgaidis
Die aktuelle Lösung ist veraltet, wie iOS 7.
Hier ist eine aktualisierte Lösung:
Dem Grund, dass meine Lösung ist wie folgt eingerichtet ist, weil ich bin mit einer UITableViewCell und ändern der Größe der Zelle dynamisch im Verhältnis zu, wie viel Platz das label stattfinden wird.
InformationsquelleAutor der Antwort Infinity James
Ohne Aufruf sizeToFit, Sie können dies tun, alle numerisch mit einem sehr plug-and-play-Lösung:
Ich benutze es viel für UITableViewCells, die dynamisch zugewiesenen Höhen.
Löst die Attribute problem @Salman Zaidi.
InformationsquelleAutor der Antwort AlexKoren
Kopieren & fügen Sie diesen Methode & Es verwendet wie:
InformationsquelleAutor der Antwort saraman
InformationsquelleAutor der Antwort ash999
Swift 4 Um Höhe für den NSAttributedString Verwendung dieser Funktion unten. Wo Breite - die Breite der UILabel oder UITextView
Bekommen Höhe für Zeichenfolge diese Funktion verwenden, ist Es fast identisch wie bei der vorherigen Methode:
InformationsquelleAutor der Antwort Malder
In meinem Fall, ich war mit einem Feste Größe header für jeden Abschnitt, aber mit einem dynamisch Größe der Zelle in jede Kopfzeile.
Die Zelle in der Höhe, hängt von der label-Höhe.
Arbeiten mit:
Funktioniert aber, wenn Sie verwenden:
wenn eine Menge von Headern sind nicht zusammengebrochen, schafft eine Menge Fehler wie header-Vervielfältigung (header-Typ x unten der gleiche Typ) und seltsame Animationen, wenn der Rahmen lädt mit animation, auch bei der Verwendung mit Typ -
.none
(FYI, eine Feste header-Höhe und Zell-Höhe funktioniert).Die Lösung ist, die Verwendung von
heightForRowAt
Rückruf und die Berechnung der Höhe der label von deinem selbst (plus die animation sieht viel besser). Denken Sie daran, dass die Höhe genannt wird, ersten.InformationsquelleAutor der Antwort OhadM
Dies ist die Erweiterung, die ich für die Berechnung der multiline-UILabel Höhen, es ist ein angepasst-snippet aus einer vorherigen stack-overflow-post:
InformationsquelleAutor der Antwort Sasa Blagojevic
Benötigen Sie eine Erweiterung von String und rufen Sie diese Methode auf
Senden Sie die Breite Ihres Etikett
InformationsquelleAutor der Antwort DURGESH Chaurasiya
wenn Sie möchten, dass das Etikett zu nehmen, dynamischen Linien, die Sie möglicherweise verwenden Sie diese
InformationsquelleAutor der Antwort Amr Angry