2017-06-04 3 views
0

Ceci est en ce qui concerne la position et non la taille.Rendre différentes UICollectionViewCells conformes à différentes dispositions?

D'après ce que j'ai vu en ligne, la convention est généralement de passer outre la mise en page et mettre en œuvre vos propres propriétés personnalisées en utilisant:

override func layoutAttributesForElements(in rect: CGRect) -> [UICollectionViewLayoutAttributes]? { 

et moi avons été en mesure de définir des attributs personnalisés disposition. Toutefois, layoutAttributesForElement effectue les opérations suivantes en fonction de la documentation:

Renvoie les attributs de disposition pour toutes les cellules et les vues du rectangle spécifié.

« Toutes les cellules »

Je veux deux cellules différentes pour se conformer à deux ensembles différents d'attributs dans la mise en page la même vue.

Des suggestions?

+0

Cette méthode est appelée lorsque vous faites défiler par exemple. Il demande, du rect je vais montrer à l'utilisateur, quelles sont les cellules et les images à montrer. Il ne s'occupe pas du type de cellule, il demande simplement que les images s'affichent si nécessaire. – Larme

+0

Cette méthode est la seule méthode que j'ai utilisée pour définir les attributs de mise en page. – Stefan

Répondre

1

Vous devez définir différentes cellules prototypes, pas différents attributs de disposition. Chacun a besoin d'un identificateur unique, puis, dans le champ collectionView(_:cellForItemAtIndexPath:) de la source de données de votre collection, appelez le dequeueReusableCell(withReuseIdentifier:for:) de la vue de collection avec l'identificateur que vous souhaitez pour le chemin donné.

+0

Lorsque j'inscris une seconde cellule et l'appelle, elle est conforme aux attributs de disposition par défaut que j'ai définis. – Stefan

+0

Ne définissez pas les attributs de disposition sur les prototypes de cellule. Utilisez simplement l'auto-calage normalement. – NRitH

+0

Disposition automatique sur un UICollectionViewCell? Je l'ai essayé et ça ne marche pas. – Stefan