2017-10-12 4 views
1

soir,iOS rapide: vue collection autoresize imbriqué dans une vue de table cellulaire

je la conception suivante:

    boîte rouge
  • : est une ligne de table
  • boîte de ORANE: est une vue de collection
  • boîte bleue: est une cellule de collecte

Lorsqu'une vue collection est vide Je voudrais que la ligne ou la collecte vue ion à AutoResize à 0.

Actuellement, j'ai obtenu ceci:

enter image description here

Je veux la boîte orange à la hauteur d'un redimensionnement automatique = 0 quand il n'y a pas la boîte bleue.

Je sais que je devrais utiliser une contrainte de collectionView Height et mettre à 0 quand il est vide.

Mais j'ai la sortie dans la cellule de tableau et la collection déléguée dans le contrôleur de vue. Et je ne sais pas comment accomplir cela.

Des conseils? Avec un exemple de code s'il vous plaît: P

+0

Lire l'article sur Table de dimensionnement automatique Afficher les cellules –

+0

pourriez-vous me donner au moins le lien? : D –

+0

Ici vous pouvez trouver comment configurer la cellule de vue de table de redimensionnement automatique: https://www.appcoda.com/self-sizing-cells/. J'espère que ceci vous aide! –

Répondre

1

Je ne pense pas qu'il soit possible de redimensionner collectionView en fonction de son contenu automatiquement.

Ce que vous pouvez réellement faire est d'ajouter une contrainte de hauteur à votre CollectionView et de le mettre à 0 s'il est vide.

Ensuite, votre cellule aura la hauteur intrinsèque, si vous vous connectez en bas de CollectionView et de haut en en conséquence (que vous peut-être déjà fait)

La dernière étape sera de mettre tableView.rowHeight à UITableViewAutomaticDimension . Probablement il fonctionnera :)

+0

Si j'utilise UITableViewAutomaticDimension les lignes de la table ignorent la hauteur de la vue de collection et se replient ... Probablement parce que la collection la vue n'est pas déjà définie –

2

Essayez d'utiliser

func tableView(_ tableView: UITableView, 
     heightForRowAt indexPath: IndexPath) -> CGFloat 
fonction

. Dans cette fonction, pour la ligne correspondante, renvoient 0.