2017-06-15 1 views
1

J'essaie de faire un tableau rempli de photos. Voici ce que je veux et mes contraintes:UITableview rempli d'images: trop d'espace entre les images

  • 3: rapport d'aspect 2 pour les photos

image cell.width = image dans cell.height avec 3: 2 multiplicateur

  • la largeur des images doit prendre toute la largeur de l'écran

image cell.centerX = Superview.centerX

image dans cell.width = Superview.width

Tableau View.Center X = X Superview.Center

Tableau View.width = Superview.width

  • espace entre les images doit être 8

Cell.Bottom = image In Cell.Bottom + 8

  • autres contraintes:

Table view.top = top layout guide.bottom

Table view.bottom = block.top rouge

C'est ce que je reçois:

enter image description here

J'ai trois images, une visible à l'écran et les deux autres visibles lors du défilement. J'ai également un bloc rouge en bas de l'écran. La tableview est derrière le bloc rouge.

Mon problème est qu'il y a un espace blanc sur chaque image. Je suppose que cela vient de la vue du contenu ou de la hauteur de la cellule qui ne correspond pas à la hauteur de ma photo, mais je n'arrive pas à le faire correctement.

Avec quelques modifications, j'obtiens un espace correct entre les images mais le rapport d'aspect "à l'écran" n'est plus respecté (= la largeur de l'image semble dépasser la largeur de l'écran). C'est ce qui arrive si j'ajoute cell.height = Image dans Cell.height. Et j'ai aussi des contraintes de conflit pour aspect = 3: 2, height = Image dans Cell.height, Image dans Cell.width = width, et height = 400.

Voyez-vous ce qui ne va pas?

Merci,

Alex

Répondre

1

Avez-vous mis votre tableView rowHeight statiquement? Je pense que ça devrait être dynamique, car sur les différents écrans, la hauteur de la cellule sera différente selon le rapport d'aspect.

Ajoutez ce code à votre liste.Cela contribuera à rendre votre taille cellulaire tableView dynamique:

self.tableView.rowHeight = UITableViewAutomaticDymension 
self.tableView.estimatedRowHeight = 60; 

Et pour tableView calculer la hauteur des cellules, ajouter la contrainte top imageView à Superview (cellule) à 0.

En fait, si vous voulez que la cellule soit hauteur statique sur différents écrans, il suffit de supprimer votre contrainte aspectRatio, ajouter imageView heightConstraint égale à la cellule. Et cela fonctionnera aussi.

+0

Je ne veux pas une hauteur statique, je veux un rapport d'aspect de 3: 2. Je n'ai rien ajouté dans mon code à propos de rowHeight, donc je suppose que c'est "statique". Dans le storyboard, l'attribut de hauteur de ligne pour la vue tabulaire est de 400, à la place je voudrais respecter le ratio d'aspect et prendre toute la largeur de l'écran, peu importe la hauteur. J'ai ajouté votre code dans viewDidLoad et ajouté l'image de contrainte Dans Cell.top = cell.top, l'espace entre les images est correct mais le format n'est pas respecté (la hauteur est très petite) et j'obtiens des contraintes conflictuelles. – Alex9494

+0

Ok! Le problème maintenant dans vos contraintes. Que voulez-vous dire par cell.top = cell.top. En fait, vous avez besoin de cell.top = cell.imageView.top. Comme votre imageView devrait coller à superView sur le bord supérieur – iamirzhan

+0

Si cela ne fonctionne pas. Essayez de supprimer toutes les contraintes dans la cellule et ajoutez uniquement l'AspectRatio des bords imageView (3: 2) et imageView à superView (0 vers le haut, gauche et droite et 8 vers le bas) – iamirzhan