Comment donner de la largeur et de la hauteur par programmation à la cellule de vue de collection dans ios, swift 3

J'ai essayé de donner la hauteur et la largeur pour collectionViewCell , par programmation. J'ai utilisé la méthode suivante:

  func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize { let viewWidth = self.deviceWidth/3 - 5 let viewHeight = viewWidth return CGSize(width :100,height: 100) } 

Cela n'a pas fonctionné. même cette méthode n'a pas montré comme un indice. Aide-moi avec ça. Existe-t-il une autre méthode de délégué pour définir la largeur et la hauteur de la cellule par programme dans Swift 3?

La méthode collectionView(_:layout:sizeForItemAt:) est la méthode du protocole UICollectionViewDelegateFlowLayout , le paramétrage de delegate et datasource de collectionView ne vous suffit pas, vous devez implémenter UICollectionViewDelegateFlowLayout avec votre class personnalisée où vous avez ajouté collectionView pour appeler les methods du protocole UICollectionViewDelegateFlowLayout . Donc, implémentez UICollectionViewDelegateFlowLayout comme ci-dessous:

class ViewController: UIViewController, UICollectionViewDelegate, UICollectionViewDataSource, UICollectionViewDelegateFlowLayout {

Assurez-vous que votre class doit implémenter UICollectionViewDelegateFlowLayout comme ceci:

 class ViewController: UIViewController,UICollectionViewDataSource,UICollectionViewDelegate, UICollectionViewDelegateFlowLayout { ... } 

Ensuite, écrivez cette méthode de délégué dans votre class:

 func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize { return CGSize(width: 100, height: 100) // The size of one cell } 

J'espère que cela vous aidera …

Ces methods fonctionnent toujours. Veuillez d'abord vous assurer que cette méthode n'est pas exécutée. Sinon, le délégué d'écriture UICollectionViewDelegateFlowLayout comme ceci:

 class MyViewController: UIViewController , UICollectionViewDelegateFlowLayout, UICollectionViewDelegate, UICollectionViewDataSource{ : : } 

Et n'oubliez pas de lier le délégué et la source de données de UICollectionView à partir du storyboard ou du code collectionView.delegate = self et collectionView.datasource = self