2009-06-11 12 views
0

Je n'arrive pas à afficher un UILabel multiligne dans une cellule UITableView personnalisée.Comment réparer un UILabel multiligne qui déborde de son UITableViewCell?

J'utilise actuellement cette fois pour calculer la hauteur de la cellule ...

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; 

... et ce pour l'étiquette elle-même.

// 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]]; 

Tout fonctionne comme prévu sauf que l'étiquette est poussée vers le bas et hors de sa cellule. Si ce n'était pas pour cette marge supérieure apparente tout irait bien.

Voici un lien vers une image de ce que je vois dans le simulateur ...

iPhone Rendering Bug

Toute aide ici serait grandement apprécié.

Répondre

1

Je ne vous vois pas définir cell.contentLabel.font dans le code que vous affichez.

Le calcul de la taille de l'étiquette utilise également cell.textLabel.font pour calculer sa taille, mais utilise la variable contentLabel.

Est-il possible que vous utilisiez une police différente du calcul?

+0

Vous aviez raison. Je ne peux pas croire que j'ai foiré ça. Merci pour l'aide. –

0

Comment ajoutez-vous votre libellé à contentView? Il semble que le positionnement d'origine est incorrect, car la hauteur semble être calculée correctement. Si vous commentez en attribuant la nouvelle image, l'étiquette est-elle dans la bonne position? Mon pari est que ce n'est pas le cas.

+0

Je crains de ne pas comprendre ce que vous voulez dire en l'ajoutant à contentView? La cellule personnalisée a été créée dans IB et j'ai ajouté l'étiquette de cette façon. Après avoir commenté la ligne qui assigne la nouvelle image tout ce que je vois est la première ligne de mon texte dans la bonne position. –

+0

Ah, je suis désolé. J'ai toujours créé mes cellules personnalisées en code. Vérifiez les ancres de redimensionnement automatique pour voir si vous êtes verrouillé en bas, en haut, etc. Vous voulez probablement qu'il soit verrouillé en haut de la cellule. – NilObject