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