Autolayout - cell self sizing

Bonjour,


 


Suite au passage de l'une de mes applications sous iOS8+ (contre iOS7+ avant), j'en profite pour nettoyer mon code de façon à  le rendre plus simple et maintenable. Je change donc le dimensionnement manuel de mes cells par un dimensionnement automatique.


Tout ce passe bien (et épargne plusieurs dizaines de lignes de codes), sauf dans le cas ou une image est présente : rien a faire, j'obtient des erreurs de layout dans la console. J'ai tenté plusieurs contraintes tels que sur la hauteur/largeur ou encore ratio, sans succès.


 


Y'a t'il une méthode pour définir la taille souhaité d'une image dans la cellule via le storyboard avec un tableview en dimension automatique ? 


 


Bonne fêtes et bonne réveillon ! 


Réponses

  • Bonjour,


     


    Tu pourrais faire voir à  quoi ressemblent tes contraintes dans ta cellule s'il te plait ?


  • TerflogagTerflogag Membre
    décembre 2015 modifié #3


    Bonjour,


     


    Tu pourrais faire voir à  quoi ressemblent tes contraintes dans ta cellule s'il te plait ?




     


     


    Voici les contraintes appliqué par exemple a un Map View qui prend toute la place de ma cellule (j'ai aussi le soucis sur des images mais le principe est le même je pense).


     


    mini_916567Capturedcran20151224162102.pn


     


    Avec ces contraintes, le rendu obtenu sur le terminal est celui voulu, mais j'ai toujours des soucis dans la console avec les contraintes non respectés (pour les quatre il me semble !).


  • Je crois que c'est parce que tu définis une hauteur fixe, mais tu la colles en haut et en bas de ta cellule et là  à  mon avis il doit pas savoir trop quoi faire.

    Essaye de mettre une hauteur >= à  une valeur pour voir
  • La question, c'est comment veux-tu positionner tes éléments dans ta cellule. Est-ce que par exemple tu veux que ton image prenne tout l'espace en largeur ou souhaites-tu seulement qu'elle ait une taille fixe ? Est-ce que tu veux la centre avec ta cellule ?


    Et c'est tout une série de questions comme celles-ci que tu dois te poser et nous partager pour être efficace.


  • TerflogagTerflogag Membre
    décembre 2015 modifié #6
    Dans mon cas il s'agit de mettre une Map dans toute la cellule, de façon à  ce qu'elle en soit totalement remplie. Concernant la taille je souhaiterai qu'elle soit toujours la même, par exemple 200. Chose que j'arrive à  faire en pratique, si je ne prend pas en compte les log console 😅


    Pour tester les dimensions positivite, je testerai cela demain !
  • C'est une map ou une image que tu souhaites placer ? Peux-tu montrer tes logs ?


    Je pense que c'est dû aux marges appliquées.
  • TerflogagTerflogag Membre
    décembre 2015 modifié #8


    C'est une map ou une image que tu souhaites placer ? Peux-tu montrer tes logs ?


    Je pense que c'est dû aux marges appliquées.




     


     


    J'ai tenté avec des marges égales à  0, meme soucis.


     


    Voici ma configuration avec une map view par exemple : 


     


    mini_436232Capturedcran20151227131218.pn


    mini_382528Capturedcran20151227131210.pn


     


    et les log console : 


     


    mini_700283Capturedcran20151227131735.pn


  • Enlève ta contrainte de hauteur.


  • Sauf que dans ce cas, ma cellule sera toute petite. Il faudrait que j'arrive a donner une hauteur de cellule pour cette cellule uniquement...


  • Logiquement non elle ne sera pas toute petite si tu utilises le estimatedRowHeight :



    tableViewView.estimatedRowHeight = 60
    tableViewView.rowHeight = UITableViewAutomaticDimension

    Là  logiquement ça devrait le faire. Si ça ne fonctionne pas, tu mets une contrainte de hauteur >= à  ta valeur de hauteur minimale.




  • Logiquement non elle ne sera pas toute petite si tu utilises le estimatedRowHeight :



    tableViewView.estimatedRowHeight = 60
    tableViewView.rowHeight = UITableViewAutomaticDimension

    Là  logiquement ça devrait le faire. Si ça ne fonctionne pas, tu mets une contrainte de hauteur >= à  ta valeur de hauteur minimale.




     


    c'est déjà  le cas malheureusement...


     


        self.displayTableView.estimatedRowHeight = 150.0;


        self.displayTableView.rowHeight = UITableViewAutomaticDimension;


     


    Avec contrainte de haute j'ai toujours des soucis dans la console, sans contrainte toujours une cellule trop petit de taille minimum.

  • C'est un peu vague en fait pour moi. Les logs tels quel m'aident pas réellement. Mais quand je les lis, rien ne les lient à  ta map. La hauteur de 20 vient plus s'apparenter à  une contrainte ajoutée par le système qu'autre chose. Pourquoi ce warning ? Difficile d'expliquer. Faudrait avoir le storyboard sous les yeux.


Connectez-vous ou Inscrivez-vous pour répondre.