Hinzufügen "...Mehr Lesen" am Ende des UILabel
Ich habe eine UILabel
und in einigen Fällen ist der text länger ist dann die UILabel
selbst, so sehe ich den text als "bla bla bla..."
möchte ich hinzufügen, dass ein ...Read More
Schaltfläche text am Ende der UILabel
..
Ich habe einige Beiträge, sondern bieten Sie Lösungen an, die nicht gut zu mir, zum Beispiel: um zu berechnen, wie viele Zeichen eingeben, die UILabel
, aber mit der Schrift bin ich über jedes Zeichen eine unterschiedliche Breite.
Wie kann ich das schaffen?
Vielen Dank im Voraus!
- verwenden truncateinMiddle
Du musst angemeldet sein, um einen Kommentar abzugeben.
Swift4 (IOS 11.2)
Swift 4.2
Nutzung
Ergebnis
Also das ist, was ich Tat fügen Sie die Mehr Lesen... - Taste, um die
UITextView
,UITextField
oderUILabel
:Es ist ein Einsatz von
fitString:intoLabel
Methode, die gefunden werden können hier.Als für die
UITagTapGestureRecognizer
ist nur eine normaleUITapGestureRecognizer
Unterklasse mit einerNSInteger
Eigenschaft namens "tag". Ich Tat das, weil ich will, um zu identifizieren, welcheRead More...
angeklickt wurden, in ich Fall, ich habe mehr als eine in der gleichenUIViewController
. Sie können eine normaleUITapGestureRecognizer
.Genießen!
Tttattributed label hat diese Funktion
https://github.com/TTTAttributedLabel/TTTAttributedLabel
Müssen Sie das "abschneiden" token wie
"Lesen Sie mehr..."
Sehen
Können Sie versuchen, den 3. Bibliothek ExpandableLable
Legen Sie die benutzerdefinierte Klasse von Ihrem UILabel zu ExpandableLabel und legen Sie die gewünschte Anzahl der Zeilen und brach text:
Müssen Sie möglicherweise legen Sie eine
delegate
um benachrichtigt, wenn Sie den link berührt wurde.Meine Lösung ist, ich erstelle ein
UIButton
(name mehr Lesen) unten-rechts und unten dieUILabel
.Danach überprüfe ich die
UILabel
ist abgeschnitten oder nicht-oder ausblenden derUIButton
=== Swift 3-version
diese Erweiterung hinzufügen:
}
Hoffe, dass dies helfen
Dies funktioniert für Swift 4.2
Hier ist eine sicherere version von @ramchandran Antwort.
In seiner Antwort, wenn die Länge des Strings ist weniger als die Länge des Texts, den Sie verwenden möchten für ... readmore, dann wird es Abstürzen. Wie z.B. dies ist, wie Sie es verwenden
Im oben genannten Beispiel die Ausgabe von
... Readmore
ist 12 Zeichen insgesamt. Wenn Ihr string waryourLabel.text = "12345678"
dann Ihren string text würde nur 8 Zeichen lang sein.Es würde Abstürzen, weil die Reichweite mit
((trimmedString?.count ?? 0) - readMoreLength)
in der Zeile unter produzieren würde ein negatives Ergebnis:Habe ich ein Sicherheits-check, um sicherzustellen, dass die Zeichenfolge ist geringer als die Anzahl der Zeichen für das, was Sie deecide zu verwenden, da readmore
Befindet sich in der Mitte des
addTrailing
FunktionUnter Verwendung der Methode - boundingRectWithSize:Optionen:Attribute:context: und Weitergabe Ihrer Schrift als
NSFontAttributeName
Schlüssel fürNSAttributedString
geben Sie die richtige rect benötigt.Aus, die Sie brauchen, um zu überprüfen, ob es größer als Ihre label-Grenzen minus offset. Nur wenn ja, müssen Sie schneiden Sie Ihre text und Karte
Read More
am Ende.diese Methode ist nützlich für showless und showAll mit updown Pfeil Bild:
hinzufügen tapgesture auf dem Etikett
Für Die Aktion
Wissen Sie, es gibt keine touch-Aktion von UILabel. so you cant touch '...Mehr Lesen' wenn der ganze text in einem UILabel.
Hinweis: meine Lösung ist, fügen Sie einen hintergrund entfernen-Taste Ende der UILabel.