Ensemble collectionView taille. (sizeForItemAtIndexPath ne fonctionne pas) Swift 3
J'ai un tableView
et dans tous les tableViewCell
est un collectionView
.
Je suis en train de changer la collectionView taille avec ce code:
func collectionView(_ collectionView: UICollectionView,
layout collectionViewLayout: UICollectionViewLayout,
sizeForItemAt indexPath: IndexPath) -> CGSize {
if collectionView.tag == 2{
return CGSize(width: 100, height: 100)
}else if collectionView.tag == 4 {
return CGSize(width: 222, height: 200)
}else{
return CGSize(width: 10, height: 10)
}
}
Le problème est qu'il n'y ait pas d'erreur mais les cellules ne pas modifier les tailles
Si vous avez besoin de savoir quelque chose de plus, il suffit d'écrire un commentaire.
Merci.
- Votre première déclaration dit que vous avez un
tableView
, mais cela ressemble à uncollectionView
. Avez-vous des deux, ou un seul? - il y a la vue d'une collection à l'intérieur de la vue de la table de la cellule
Vous devez vous connecter pour publier un commentaire.
La signature de cette méthode a changé dans Swift 3:
Prêter attention à la différence subtile:
(_ collectionView: ...
au lieu de(collectionView: ...
.C'est parce que dans Swift 3, vous devez spécifier explicitement l'étiquette du premier paramètre. Vous pouvez remplacer ce comportement par défaut en ajoutant le caractère de soulignement
_
.Aussi, assurez-vous que votre classe adopte les deux
UICollectionViewDelegate
etUICollectionViewDelegateFlowLayout
protocolesReportez-vous à ce lien pour en savoir plus sur les changements à Swift 3.
Vous devez indiquer que vous mettre en œuvre le protocole UICollectionViewDelegateFlowLayout dans votre déclaration de classe.
Version Courte:
Essayez d'ajouter
Version longue:
Pour Moi, c'était une petite erreur -
Ce serait appeler ces méthodes
Cependant, il serait PAS appel
Parce que ce n'est pas une partie de UICollectionView 's de la source de données. C'est une partie de UICollectionView son délégué.
Afin d'ajouter le suivant résolu mon problème.
C'est donc mon code maintenant et il fonctionne:
J'ai eu le même problème! Si vous faites la taille de la moitié de la largeur (width/2), alors il apparaîtra toujours comme l'ensemble de la largeur, car le rembourrage est ajoutée à la largeur/2.
Correctif: assurez-vous que la section des encarts dans la table de montage séquentiel à 0. Sinon, ajustez la largeur/2 à une taille qui COMPREND la section des encarts.
Il m'a fallu un certain temps pour le réparer 😉