Autolayout + UITableViewCell
Salut,
Je pense avoir compris comment fonctionne Autolayout pour positionner des vues à l'intérieur d'une vue depuis IB.
Par contre, je ne comprends pas comment marchent les contraintes générales sur la vue.
Par exemple, j'ai une UITableView qui contient des UITableViewCell (customizées par IB). Je n'arrive pas à dire à mon UITableViewCell d'adapter sa largeur à celle de la UITableView. Alors que je n'ai pas de mal à adapter tout le contenu interne de la UITableViewCell.
J'ai essayé des changements ici:
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Utilise Autolayout pour redimensionner les sous-vues de la UITableViewCell.
Et du coup au final c'est la UITableView qui rajoute à la volée (lors du reuse) les contraintes entre la UITableView et ses cells pour s'assurer automatiquement qu'elles sont la même largeur.
---
C'est pas comme si tu faisais un XIB ou Storyboard dans lequel tu mettais une UIView et directement ses Subviews. là tu design une UITableView d'un côté, et des UITableViewCells de l'autre, et c'est la TableView qui va ajouter les cells en subviews quand elle en aura besoin, après avoir appelé "tableView:cellForRowAtIndexPath:".
Après si tu fais ton design à la fois de ta TableView et de ses cells dans un même fichier XIB/Storyboard, le fait que dans les Storyboard les templates de cellules associées à la UITableView sont représentés directement dans la TableView visuellement te trompe peut-être sur ce point c'est pour ça ?
[EDIT] Grillé par Céroce.
Je viens de me rendre compte que ma question était stupide effectivement.
Je vais essayer de voir d'où vient mon problème, j'imagine que c'est la UITableView qui ne s'étire pas correctement. Je reviens vers vous bientôt.
Bon, oui, hier j'ai été un peu pressé et je me suis mélangé les pinceaux, il est évident que UITableViewCell s'adapte à UITableView.
J'ai résolu mon problème dans les contraintes de la superview qui contient la UITableView (mais qui n'utilise pas Autolayout pour le coup).
---
Pour en revenir au titre du sujet, j'ai 11 sous-vues (image, texte...) dans mon UITableView.
Peut-on indiquer à une sous-vue de ne pas s'afficher du tout si la largeur de la cellule passe sous une certaine taille (par exemple 400px) ?
En gros, j'ai:
image1 - texte - image2 - image3
Si la largeur de la cellule réduit trop, je voudrais dire à image2 de ne pas s'afficher, pour que texte ait assez de place. Je me doute que c'est faisable par le code, mais dans IB ?
(je ne sais pas si c'est une bonne pratique néanmoins)
Tu peux essayer comme ça :
1) crée un IBOutlet @property myConstraint sur ta contrainte
2) crée un @property (readonly) BOOL isBigEnough
3) dans IB tu connectes la @property isHidden de tes views à isBigEnough
Ah oui, désolé !!
Du coup, c'est chiant... avec des observers ?
PS : pour le mainteneur du site (@muqqadar ?)
-> faute d'orthographe :