2010-06-11 5 views
1

J'ai un problème avec une application iPhone. L'application possède un contrôleur de vue de table avec des cellules de vue de table personnalisées. Chaque cellule a une étiquette (veuillez me corriger si j'ai besoin d'utiliser la vue texte, etc.). Je reçois du texte dynamiquement à partir d'un appel de service Web et je ne sais pas combien de temps le texte sera.Hauteur automatique de l'étiquette ou du texte dans la cellule de vue de table

Maintenant, le problème est que je veux ajuster la hauteur de la cellule de vue table en fonction du texte que je reçois. Comment puis-je augmenter la hauteur de Label ou de TextView dans la cellule de vue de la table afin qu'elle puisse contenir tout le texte et, en fait, augmenter la hauteur de la cellule vue de la table.

Est-ce que quelqu'un sait comment gérer ce genre de problème de conception?

Merci

Répondre

0

La réponse dépend de la taille et de la complexité des informations affichées.

Pour de petites quantités de texte, vous pouvez utiliser NSString UIKit Additions pour calculer les dimensions de la chaîne affichée, puis ajuster la taille des étiquettes ou autres commandes d'une cellule avant de renvoyer la cellule dans la vue de table. Cela vous permettra d'affiner l'affichage pour chaque cellule.

Pour de plus grandes quantités de texte, je suggère une vue détaillée si possible. Afficher une petite quantité de texte dans la table, puis faire en sorte que la sélection de la table ouvre une autre vue contenant le texte intégral. Je pense qu'il est difficile pour la plupart des utilisateurs de lire beaucoup de texte dans un tableau.

+0

Oui, je considère aussi cette logique de desing. Le texte dans mon cas ne sera pas plus de 500 caractères. Que pensez-vous dans ce cas? – Leo

+0

Si la taille de la vue de la table occupe un tiers ou plus de la zone d'écran verticale, elle cesse de ressembler à une table et les utilisateurs ne savent plus comment l'utiliser. Je pense que vous devez avoir au moins trois cellules visibles en tout temps. Une alternative consiste à afficher du texte dans une vue détaillée indiquant que les pages sont à gauche et à droite comme dans la vue détaillée de la photothèque. Tout dépend des données réelles et de la façon dont les gens vont les utiliser. – TechZen

2

Vous pouvez obtenir la hauteur de la chaîne passée de la fonction ci-dessous

-(float)getHeightByWidth:(NSString*)myString:(UIFont*)mySize:(int)myWidth { 

    CGSize boundingSize = CGSizeMake(myWidth, CGFLOAT_MAX); 
    CGSize requiredSize = [myString sizeWithFont:mySize constrainedToSize:boundingSize lineBreakMode:UILineBreakModeWordWrap]; 

    return requiredSize.height; 

} 

Sur la base de la fonction ci-dessus, vous pouvez régler la hauteur de l'étiquette ainsi que la cellule où sa va utiliser ..

+0

Assurez-vous d'ajouter un peu de remplissage au cadre de texte si vous affichez dans une cellule. –

Questions connexes