2014-06-26 7 views
1

J'ai un UITableView avec deux prototypes de cellules. Un (le premier sur la capture d'écran ci-dessus) que vous pourriez reconnaître comme la cellule standard sous-titre. Le deuxième est personnalisé, avec un champ de texte supplémentaire. Lorsque j'exécute l'application, les étiquettes utilisant le premier modèle dimensionnent leur largeur en fonction de la taille du texte, alors que celle qui utilise le modèle personnalisé n'évoluera pas, ce qui écrira le texte après trois caractères.Autosize UILabels dans un style personnalisé UITableViewCell

Est-il possible de configurer le modèle personnalisé dans le concepteur XCode Storyboard à la taille de l'étiquette comme le haut-sous-titre modèle cellulaire fait?

cell templates

+0

La définition de contraintes de disposition automatique adaptées à la cellule que vous souhaitez personnaliser la rendra opérationnelle. –

+0

Définir –

+0

Comment définir la hauteur de chaque cellule? Je veux dire tableView: heightForRowAtIndexPath: – x4snowman

Répondre

0

définir des contraintes comme représenté en figure

enter image description here

L'étiquette tronquée dans l'image (T ..) est TextField.

Régler la hauteur de la ligne à la taille minimale pour la cellule 155.

0

Essayez ceci:

Vous pouvez modifier la taille de l'étiquette par rapport au texte entré dans le champ de texte

-(CGSize)frameForText:(NSString*)text sizeWithFont:(UIFont*)font constrainedToSize:(CGSize)size lineBreakMode:(NSLineBreakMode)lineBreakMode  
{ 

NSMutableParagraphStyle * paragraphStyle = [[NSMutableParagraphStyle defaultParagraphStyle] mutableCopy]; 
paragraphStyle.lineBreakMode = lineBreakMode; 

NSDictionary * attributes = @{NSFontAttributeName:font, 
           NSParagraphStyleAttributeName:paragraphStyle 
           }; 
CGRect textRect = [text boundingRectWithSize:size 
            options:NSStringDrawingUsesLineFragmentOrigin 
            attributes:attributes 
            context:nil]; 
return textRect.size; 
} 

appel de la méthode:

CGSize size =[self frameForText:body sizeWithFont:[UIFont systemFontOfSize:14.0] constrainedToSize:CGSizeMake(240.0, 480.0) lineBreakMode:NSLineBreakByWordWrapping]; 

Merci

+0

Merci, je veux éviter d'avoir à faire cela dans le code si. Il doit sûrement être possible d'y parvenir grâce au concepteur de storyboard –

Questions connexes