UICollectionView: indice actuel chemin d'accès pour le contrôle de page
Je suis en utilisant un UICollectionView avec un flux de mise en page pour afficher une liste de cellules, j'ai aussi une page de contrôle pour indiquer la page en cours, mais il semble y avoir aucun moyen d'obtenir de l'index en cours de chemin, je sais que je peux obtenir des cellules visibles:
UICollectionView courant de la cellule visible de l'indice de
cependant il peut y avoir plus d'une cellules visibles, même si chacune de mes cellules occupe toute la largeur de l'écran, si je scroll pour avoir les deux moitiés de deux cellules, puis ils sont à la fois visibles, donc, il y a un moyen d'obtenir un seul courant de la cellule visible de l'index?
Grâce
Vous devez vous connecter pour publier un commentaire.
Vous pouvez obtenir de l'index actuel, par le suivi de contentOffset dans scrollViewDidScroll délégué
ce sera quelque chose comme ceci
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
fournit un effet plus lisse si vous avez besoin d'une mise à jour de l'INTERFACE utilisateur de quelque chose.NSInteger currentIndex = (NSInteger)(self.collectionView.contentOffset.x / self.collectionView.frame.size.width + 0.5);
? Ceci donne de meilleurs résultats quand il y a des demi pages ou lorsqu'une page contient de partie, montrant la vue de collection cellules.Page via NSIndexPath partir du centre de la vue.
Fonctionne même votre page n'est pas égale à la largeur de UICollectionView.
ip.row
àpageControl.currentPage
avant affectation pour éviter le déclenchement inutile de surcharge sur lesUIPageControl
logiqueCertainement vous devez attraper l'élément visible lorsque le défilement mouvement est arrêté. Utilisez ensuite le code pour le faire.
Dans Collectionview-> cellForItemAtIndexPath (Méthode) ajouter le ci-dessous
code pour calculer le Nombre de pages,
Ajouter le ScrollView Délégué méthode,
J'ai eu la même situation où ma disposition de flux a été fixé pour UICollectionViewScrollDirectionHorizontal et j'ai été en utilisant le contrôle de page pour afficher la page en cours.
Je l'ai réalisé à l'aide de personnalisé à la disposition de flux.
/------------------------
Fichier d'en-tête (.h) pour l'en-tête personnalisé
------------------------/
/------------------- La mise en œuvre de fichier (.m) pour l'en-tête personnalisé -------------------/
Votre classe contenant la collection de point de vue doit être conforme à un protocole de CustomViewFlowLayoutDelegate' j'ai décrit plus tôt dans la mise en page personnalisée fichier d'en-tête. Comme:
Il y a deux façons de brancher votre mise en page personnalisée à la vue de collection, que ce soit dans xib OU dans le code comme dans viewDidLoad:
Dernière chose, dans MyCollectionViewController mise en œuvre de fichier, de mettre en œuvre délégué méthode de "CustomViewFlowLayoutDelegate'.
}
Je l'espère, ce serait utile. 🙂
pour swift 4.2
vous pouvez ignorer la fonction _SetTimer() , c'est la fonction de défilement automatique
Note - j'ai trouvé andykkt de réponse utile, mais depuis qu'il est en obj-c converti à swift et aussi mis en place de la logique dans un autre
UIScrollView
délégué pour un effet plus lisse.