CollectionView passer à la cellule suivante automatiquement swift
Je suis en train de créer curseur horizontal comme Flipkart. Je suis à l'aide de collectionView avec le défilement Horizontal et la pagination. Cellule contient imageView. Je suis d'réussir dans le défilement des éléments horizontalement manuellement, mais je veux que tous ces éléments à déplacer automatique et manuelle à la fois. Je ne reçois pas comment faire défiler les éléments de collectionView automatiquement. Merci de me guider pour ce faire.
J'ai utiliser ce code dans viewDidAppear:
let visibleIndexPath: NSIndexPath = self.collectionView.indexPathForCell(cell)!
self.collectionView.scrollToItemAtIndexPath(visibleIndexPath,
atScrollPosition: UICollectionViewScrollPosition.CenteredHorizontally, animated: true)
Grâce.
EDIT:
import UIKit
class ViewController: UIViewController, UICollectionViewDelegate, UICollectionViewDataSource {
@IBOutlet var pageControl: UIPageControl!
@IBOutlet var collectionView: UICollectionView!
var begin = false
let image1 = UIImage(named: "Slide 1")
let image2 = UIImage(named: "Slide 2")
let image3 = UIImage(named: "Slide 1")
var images = [UIImage]()
override func viewDidLoad() {
super.viewDidLoad()
//Do any additional setup after loading the view, typically from a nib.
images = [image1!, image2!, image3!]
startTimer()
}
func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
pageControl.numberOfPages = images.count
return images.count
}
var cell : CollectionViewCell1!
func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
cell = collectionView.dequeueReusableCellWithReuseIdentifier("CollectionViewCell1", forIndexPath: indexPath) as! CollectionViewCell1
cell.cell_image.image = images[indexPath.row]
return cell
}
/**
Scroll to Next Cell
*/
func scrollToNextCell(){
//get cell size
let cellSize = CGSizeMake(self.view.frame.width, self.view.frame.height);
//get current content Offset of the Collection view
let contentOffset = collectionView.contentOffset;
//scroll to next cell
if begin == true
{
pageControl.currentPage == 0
collectionView.scrollRectToVisible(CGRectZero, animated: true)
begin = false
}
else
{
collectionView.scrollRectToVisible(CGRectMake(contentOffset.x + cellSize.width, contentOffset.y, cellSize.width, cellSize.height), animated: true);
}
}
/**
Invokes Timer to start Automatic Animation with repeat enabled
*/
func startTimer() {
NSTimer.scheduledTimerWithTimeInterval(2.0, target: self, selector: #selector(ViewController.scrollToNextCell), userInfo: nil, repeats: true);
}
func scrollViewDidEndDecelerating(scrollView: UIScrollView) {
//If the scroll animation ended, update the page control to reflect the current page we are on
pageControl.currentPage = Int((collectionView.contentOffset.x / collectionView.contentSize.width) * CGFloat(images.count))
if collectionView.contentSize.width == collectionView.contentOffset.x + self.view.frame.width
{
begin = true
}
}
func scrollViewDidEndScrollingAnimation(scrollView: UIScrollView) {
//Called when manually setting contentOffset
scrollViewDidEndDecelerating(scrollView)
}
}
C'est tout mon code.. je ne suis pas en mesure d'aller à la première cellule après cellule. S'il vous plaît Aider moi.
vous pouvez utiliser NSTimer avec 1 seconde de retard et d'animer à la cellule suivante de l'indice.
Yah.. mais je ne reçois pas comment utiliser NSTimer avec collectionView pour déplacer la cellule. U peut m'aider?
Yah.. mais je ne reçois pas comment utiliser NSTimer avec collectionView pour déplacer la cellule. U peut m'aider?
OriginalL'auteur Riddhi Shah | 2016-04-13
Vous devez vous connecter pour publier un commentaire.
Ci-dessous est un code que vous pouvez essayer :
tout ce que vous pouvez faire est de vérifier le contentSize de CollectionView si son égal contentOffset+cellSize puis faites défiler jusqu'à CGRectZero
Merci pour l'aide..
Je ne suis pas en mesure d'aller à la première page.. j'ai fait comme vous avez dit.. @ Babul Prabhakar
à essayer si collectionView.contentSize.largeur <= collectionView.contentOffset.x + auto.vue.cadre.largeur { begin = true }
OriginalL'auteur Babul Prabhakar
OriginalL'auteur Kamran
Swift 3
Ce code testé passe à la cellule suivante et retourne le premier élément après la dernière.
else { self.x = 1 self.collectionViewUp.scrollToItem(at: IndexPath(item: 0, section: 0), at: .centeredHorizontally, animated: true) }
Merci pour vos commentaires.Pouvez-vous Svp m'Aider à utiliser ce code pour plusieurs de collecte de vue à l'intérieur de la vue de la table de la cellule
OriginalL'auteur Daniel Chernyshev
Pour Swift4
topMenuCollection :- votre vue de collection
bannière.Le comte:- un nombre de cellules contenant une collection vue
OriginalL'auteur Sameer Saif
Je suggère l'utilisation de l'affichage de la collection de la méthode
scrollToItem(at:at:animated:)
plutôt que scrollRectToVisible. Il vous évite d'avoir à faire des calculs pour comprendre ce rectangle à exposer. Vous pouvez simplement spécifier un indexPath à qui vous voulez faire défiler.comment puis-je spécifier un indexpath?
Le nom complet de la fonction est
func scrollToItem(at indexPath: IndexPath, at scrollPosition: UICollectionViewScrollPosition, animated: Bool)
. Il prend un IndexPath, ainsi que d'une position de défilement. Regardez cette fonction dans le Xcode API docs pour plus d'informations.OriginalL'auteur Duncan C
swift 4:
OriginalL'auteur ingconti
OriginalL'auteur Davender Verma Soni
essayer cette
OriginalL'auteur Moinuddin Girach