2009-06-11 10 views
0

Ich habe Probleme beim Anzeigen eines mehrzeiligen UILabel in einer benutzerdefinierten UITableView-Zelle.Wie behebe ich ein mehrzeiliges UILabel, das seinen UITableViewCell überfüllt?

Ich bin derzeit das sowohl die Höhe der Zelle berechnen mit ...

NSString *cellText = [howtoSection objectAtIndex:row]; 
UIFont *cellFont = [UIFont fontWithName:@"Helvetica" size:15.0]; 
CGSize constraintSize = CGSizeMake(260.0f, MAXFLOAT); 
CGSize labelSize = [cellText sizeWithFont:cellFont constrainedToSize:constraintSize lineBreakMode:UILineBreakModeWordWrap]; 

return labelSize.height + 20; 

... und das ist für das Label selbst.

// Calc the height 
NSString *cellText = [howtoSection objectAtIndex:row]; 
CGSize constraintSize = CGSizeMake(260.0f, MAXFLOAT); 
CGSize labelSize = [cellText sizeWithFont:cell.textLabel.font constrainedToSize:constraintSize lineBreakMode:cell.textLabel.lineBreakMode]; 

// Create the label frame 
CGRect newFrame = cell.contentLabel.frame; 
newFrame.size.height = labelSize.height; 
cell.contentLabel.frame = newFrame; 

[cell.contentLabel setText:[howtoSection objectAtIndex:row]]; 

Alles funktioniert wie geplant, außer dass das Etikett aus seiner Zelle gedrückt wird. Wenn es nicht für diesen scheinbaren oberen Rand wäre, würde alles passen.

Hier ist ein Link zu einem Bild von dem, was ich im Simulator zu sehen bin ...

iPhone Rendering Bug

All hier Hilfe würde sehr geschätzt werden.

Antwort

1

Ich sehe nicht, Sie cell.contentLabel.font in den Code, den Sie anzeigen.

Auch die Etikettengrößenberechnung verwendet cell.textLabel.font, um ihre Größe zu berechnen, rendert aber mit der contentLabel Variable.

Ist es möglich, dass Sie mit einer anderen Schriftart als der Berechnung rendern?

+0

Sie waren richtig. Ich kann nicht glauben, dass ich das vermasselt habe. Danke für die Hilfe. –

0

Wie fügen Sie Ihr Label zum ContentView hinzu? Es sieht so aus, als wäre die ursprüngliche Positionierung falsch, da die Höhe korrekt berechnet zu sein scheint. Wenn Sie die Zuweisung des neuen Rahmens auskommentieren, ist das Label in der richtigen Position? Meine Wette ist, dass es nicht ist.

+0

Ich fürchte, ich verstehe nicht, was Sie meinen, indem Sie es zum ContentView hinzufügen? Die benutzerdefinierte Zelle wurde in IB erstellt und ich habe das Label hinzugefügt. Nach dem Auskommentieren der Zeile, die den neuen Rahmen zuweist, sehe ich nur die erste Zeile meines Textes in der richtigen Position. –

+0

Ah, es tut mir leid. Ich habe meine benutzerdefinierten Zellen immer im Code erstellt. Überprüfen Sie die Anker für die automatische Größenanpassung, um festzustellen, ob Sie am unteren, oberen Rand usw. fixiert sind. Möglicherweise möchten Sie, dass sie am oberen Rand der Zelle verankert ist. – NilObject

Verwandte Themen