In einem UITableView
, das eine lange Liste von Chat-Konversationen anzeigen muss, die oft Emojis enthalten, tritt ein Größenberechnungsfehler auf.Emojis mit obj-c sizeWithFont Mathe
Mein Problem ist, dass, wenn eine Zeichenfolge genau die richtige Länge ist, und ich sizeWithFont
verwende, bekomme ich bei meiner ersten Messung mit sizewithfont
eine falsche Länge der Zeichenfolge, was einen "Zeilenumbruch" verursacht.
Ich nehme an, dass es ist, weil die Zeichenfolge ":-)" breiter als das eigentliche Smiley-Symbol ist.
Der Beweis ist hier zu sehen:
Jetzt bei einigen anderen Stapel, über, einige behaupten, dass sizeWithFont
nur für die Zeichenfolge ausmachen werden, nicht die Emoji, die für mich nicht macht Sinn, da es richtig ist "irgendwann" ...
Aber sie schlagen vor, mit sizeToFit stattdessen, also habe ich beschlossen, es auszuprobieren.
Bam, das gleiche Resultat.
Kann jemand dem entgegenwirken? Gibt es eine boolean
, um zu überprüfen, ob "Label fertig ist Emoji-verarbeitet", so kann ich diesen Anruf überspringen?
Das Ausführen der gleichen Zeile zweimal tut nichts, es scheint, dass die Ansicht gezeichnet werden muss, bevor sizeWithFont
seinen Fehler erkennt.
Die angezeigte Spalte wird in einem Segment - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
in einer benutzerdefinierten Zelle ausgeführt. Ich kann den Fehler auch auf einer vollkommen regulären UITableViewCell replizieren, so scheint es nicht zu sein.
Skalieren Sie ein Etikett oder die Zelle selbst? Wenn nur das Etikett dimensioniert wird, denke ich, dass ich das automatische Layout verwenden werde, um all die Magie zu nutzen. Programmatisch berechnen Sie die Größe des Etiketts ist fehleranfällig. – zetachang
Ich habe festgestellt, dass dies gute Messwerte liefert, aber ich habe Emojis nicht versucht. - [UILabel textRectForBounds: limitedToNumberOfLines:] –
ab iOS 7 'sizeWithFont: constrainedToSize: lineBreakMode' ist veraltet und wird durch' boundingRectWithSize ersetzt: options: attributes: context: ' – aug2uag