Création de défilement lent vers indexPath dans UICollectionView
Je travaille sur un projet où je suis à l'aide d'un UICollectionView de créer une "image ticker" où je suis de la publicité d'une série de logos. Le collectionView est un élément haut et douze articles de long, et montre deux ou trois éléments à la fois (selon la taille des logos visibles).
Je voudrais faire un ralentir le défilement automatique de l'animation à partir du premier élément de la dernière, puis répétez.
Quelqu'un a été capable de faire ce travail? Je peux obtenir le défilement de travail à l'aide de
[myCollection scrollToItemAtIndexPath:[NSIndexPath indexPathForRow:(myImages.count -1) inSection:0] atScrollPosition:UICollectionViewScrollPositionRight animated:YES];
Mais c'est beaucoup trop rapide!
[UIView animateWithDuration:10 delay:2 options:(UIViewAnimationOptionAutoreverse + UIViewAnimationOptionRepeat) animations:^{
[myCollection scrollToItemAtIndexPath:[NSIndexPath indexPathForRow:(myImages.count -1) inSection:0] atScrollPosition:UICollectionViewScrollPositionRight animated:NO];
} completion:nil];
Cela donne le souhaité la vitesse de défilement, mais seulement depuis quelques cellules sont visibles dans la série. Je soupçonne qu'ils (et même le démarrage de cellules visibles) sont en train d'être retiré immédiatement.
Toutes les pensées?
source d'informationauteur Chris
Vous devez vous connecter pour publier un commentaire.
Vous pouvez essayer cette approche:
- Je utiliser un "1 pixel de décalage" truc. Lors du défilement de la programmation, il suffit de régler la fin
contentOffset.x
à 1 pixel plus/moins qu'il ne le devrait. Cela devrait être imperceptible. Et dans l'achèvement de bloquer le régler à la valeur réelle. De cette façon, vous pouvez éviter le cellulaire prématuré problème de file d'attente et deviennent lisse de défilement de l'animation 😉Voici un exemple de défilement à droite de la page (par exemple, à partir de la page 1 à 2). Remarquez que dans le
animations:
bloc je défile en fait un pixel de moins en moins (pageWidth * nextPage - 1
). J'ai ensuite restaurer la valeur correcte dans lacompletion:
bloc.Vous pouvez également avoir un "lent", faites défiler jusqu'à la fin de vous
UICollectionView
sans avoir à "sauter" d'indexpath à indexpath. J'ai créé ce rapidement pour une collection vue sur unTVOS
application:Je viens d'appeler le
autoScroll()
dans leviewDidLoad()
et le reste prendra soin de lui-même. La vitesse de défilement est décidé par le temps de l'animation de laUIView
. Vous pouvez (je n'ai pas essayé) ajouter une NSTimer avec0
secondes au lieu de sorte que vous pouvez invalider sur userscroll.Pour quelqu'un d'autre trouver cet, j'ai mis à jour Masa la suggestion de travailler sur Swift et j'ai introduit un peu de relâchement vers la fin de sorte qu'il agit plus comme l'original scrollItemsToIndexPath animé appel. J'ai des centaines d'articles, à mon avis, donc, à un rythme régulier n'est pas une option pour moi.
Modifier les valeurs de dif et le modificateur règle la durée et le niveau de la facilité pour la plupart des situations.
.h fichier,
déclarer ce timer,
Placer ce code timer,
puis,
Espère que ça vous sera utile.