2017-06-25 3 views
1

J'ai une cellule de collectionView qui affiche les cellules horizontalement. Je veux seulement un certain nombre de cellules à afficher sur l'écran et après le montant que je veux afficher ... ou quelque chose pour signifier qu'il y a plus de cellules disponibles. Je ne veux pas que l'utilisateur fasse défiler vers plus de cellulesSwift iOS -Comment tronquer les cellules horizontales de CollectionView lorsqu'elles sont sur le point de dépasser les limites de l'écran

Parce qu'il y a différentes tailles d'écran comme iPhone 4/5/6/7/iPad etc .. Je ne veux pas mettre un nombre exact d'éléments à obtenir affiché. Au lieu de cela, je veux tronquer le nombre d'éléments en fonction de la taille de l'écran, par exemple. Sur un iPhone 7+ en format .compact, au moins cinq cellules peuvent tenir sur l'écran mais sur un iPhone 4 seules trois cellules peuvent tenir sur un écran et sur un iPad probablement 20 cellules.

j'imagine que je ferais quelque chose comme ceci:

func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { 

    //I know this is comparing an Int to a CGRect and it won't work 
    if items.count > UIScreen.main.bounds.width{ 
     //stop count and display truncation dots ... 
    } 
    return self.items.count 
} 

Comment pourrais-je accomplir cela?

Répondre

1

Pour y parvenir, vous devez mettre en œuvre la méthode de protocole

collectionView(_ collectionView: UICollectionView, 
        layout collectionViewLayout: UICollectionViewLayout, 
      sizeForItemAt indexPath: IndexPath) -> CGSize 

Vous devez retourner manuellement la taille de chaque cellule dans ce cas vous calculerez la largeur de la cellule en fonction de la taille de votre écran.

+0

merci, je vais essayer. Comment afficher les points de troncature ...? Je pensais peut-être que j'avais une cellule t spécifique, avec les points déjà à l'intérieur d'eux et lorsque les cellules se rapprochent des limites de l'écran, la cellule tronquée est affichée en dernier. Sauf s'il y a un meilleur moyen? –

+0

Ajout d'un commentaire à ma réponse, vous devrez calculer dans quel écran vous devez retourner le nombre d'éléments dans la section que vous voulez en fonction de l'écran, puis ajouter une dernière ligne l'affichage des points. – Jonathanff

+0

Merci, je vais essayer –