heightForRowAtIndexPath für mehr NSStrings
Ich habe eine UITableView
(Gruppiert!) und berechnen die Höhe von zwei Arten von Zellen: UITableViewCellStyleDefault
und UITableViewCellStyleValue2
.
Dies ist, wie ich es für UITableViewCellStyleDefault
:
CGSize textSize = {300.f, 200000.0f};
CGSize size = [myTextString1 sizeWithFont:[UIFont systemFontOfSize:14.0f] constrainedToSize:textSize lineBreakMode:UILineBreakModeWordWrap];
size.height += 30.0f;
result = MAX(size.height, 44.0f);
Und für UITableViewCellStyleValue2
:
CGSize textSize = {207.f, 200000.0f};
CGSize size = [myTextString2 sizeWithFont:[UIFont systemFontOfSize:14.0f] constrainedToSize:textSize lineBreakMode:UILineBreakModeWordWrap];
size.height += 30.0f;
result = MAX(size.height, 44.0f);
Mein Problem ist es, dass Sie fehlerhafte Höhen und ich denke, es ist die textSize
wo ich falsche zahlen. Mit langen Texten, der untere Teil wird abgeschnitten (meist nur eine Zeile mit ein paar Wörtern), und für beide CellStyles Sie haben seltsame Abstände oberhalb und unterhalb des Textes in der Zelle.
Für UITableViewCellStyleValue2
ich habe die Breite (207.0f
) machen den text.Hintergrundfarbe rot und dann nur die Berechnung der Größe der box. 300.0f
Breite für UITableViewCellStyleDefault
ist, wie groß die Zelle ist mit UITableViewStyleGrouped
.
Weiß jemand, welche Werte ich brauche, zu verwenden, um richtig zu berechnen, die Größe der eine NSString
und dadurch erhalten Sie eine entsprechende Höhe für meine Zellen?
Dank
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier ist der code, den ich benutze für diese. Es funktioniert wie ein Charme für eine Art von Zelle. Es kann einige nützliche Teile für Ihre Anwendung.
Beim erstellen von Ihre Zelle verwenden Sie die gleiche schriftart, die Sie verwenden, um zu Messen?
Verwendet habe ich das tutorial auf auf dieser Seite und alles, was für mich gearbeitet. Es könnte nützlich sein, um Sie auch:
Es scheint, Sie haben herausgefunden, dass Sie waren mit der falschen Schriftgröße. Sie möchten möglicherweise verwenden Sie einfach die
font
undlineBreakMode
Eigenschaften der label um dieses problem zu vermeiden in der Zukunft, vor allem, wenn Sie ändern Sie in der Zelle zu einem späteren Zeitpunkt. Auch für die Lesbarkeit Willen, ich möchte vermeiden, hinzufügen, um die Höhe, die vor der Rückgabe einer Zahl. Stattdessen würde ich versuchen, so etwas wie dieses:Ich verwendet, 1979, weil laut Anleitung sollte man nicht, die Werte zurückgeben, die größer als 2009.
Wenn Sie möchten, um die Berechnung der Höhe richtig für cellvalue2, die Sie verwenden sollten:
[UIFont boldSystemFontOfSize:15.0f]
und als linebreakmode:NSLineBreakByTruncatingTail
Wenn Sie nicht verwenden Fett, der text füllt richtig, aber Sie verlieren die richtige vertikale Polsterung.
Den rest Ihrer Berechnung korrekt sind.
Wann wird für mich arbeiten wird, um zu berechnen, constraintSize basiert auf der Breite der Tabelle anzeigen:
Einfachste Weg, dies zu tun:
Rückkehr der Werte auf der Grundlage der Abschnitte, die Sie haben. Dies wird Ihnen benutzerdefinierte Zeilenhöhe.