2010-10-02 6 views
1

J'ai un UITableView avec de nombreuses lignes qui poussent un DetailViewController en fonction de la sélection. Cette vue de détail contient un UIImageView, et plusieurs UILabels (disons la description du livre, les commentaires du livre, etc.). Dans viewWillAppear j'affecte le contenu approprié à ces points de vente, afin d'afficher le contenu de la ligne sélectionnée. Mon problème est que le texte pourrait être une phrase, ou quelques paragraphes. Donc, si j'ai une sortie pour la description du livre et une autre pour les commentaires de livre, comment suis-je supposé positionner ces composants correctement, de sorte que leur distance horizontale soit toujours la même? J'ai pensé à créer un UIWebView et charger le HTML généré dynamiquement, mais il doit y avoir une manière plus propre, non?Comment repositionner UILabels et UIImageViews dont les cotes changent dynamiquement?

Voici une chose visuelle si cela aide :)

------------------------------ 
| Description    | 
| [multiple lines go here] | 
|       | 
| [Image]     | 
|       | 
| Comments     | 
| [multiple lines go here] | 
------------------------------ 

Répondre

3

Lorsque vous votre mise en page UITableView, Si vous utilisez UILabels pour la description et vous pouvez comprendre la taille des commentaires avec quelque chose comme ceci:

CGSize labelSize = [nameLabel.text sizeWithFont: nameLabel.font 
           constrainedToSize: CGSizeMake(actualWidth, MAXFLOAT) 
            lineBreakMode: UILineBreakModeWordWrap]; 

Une fois que vous connaissez la hauteur pour la description permet de dire, vous pouvez positionner le UIImageView de façon appropriée à l'aide CGRect, etc, etc. calculent ensuite la hauteur de la ligne UITableView avec quelque chose comme ceci:

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 
1

Créez une classe de vue personnalisée et effectuez une mise en forme dans -layoutSubviews à l'aide de -sizeThatFits: et -sizeToFit.

Le code de disposition n'appartient pas au contrôleur de vue.

Questions connexes