tutorial source example data collection ios uicollectionview

ios - source - uicollectionview swift 4



No se pudo obtener la página actual de UICollectionView (1)

Paginé una collection view en dirección horizontal, usando el siguiente código.

- (void)viewDidLoad { [super viewDidLoad]; self.collectionView.pagingEnabled = YES; self.collectionView.directionalLockEnabled = YES; self.collectionView.bounces = NO; self.collectionView.showsHorizontalScrollIndicator = NO; self.collectionView.delegate = self; [self setup]; self.pageControl.currentPage = 0; self.pageControl.numberOfPages = floor(self.collectionView.contentSize.width / self.collectionView.frame.size.width) + 1; }

Estoy usando pageControl para indicar cuántas páginas tengo y la página actual.

Usé el método similar a los siguientes enlaces para determinar la página actual.

iOS6 UICollectionView y UIPageControl: ¿cómo obtener una celda visible?

UICollectionView: ruta de índice actual para control de página

Como siguiendo.

-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView { NSInteger currentPage = self.collectionView.contentOffset.x / self.collectionView.frame.size.width; self.pageControl.currentPage = currentPage; }

Sin embargo, no funciona. Cuando deslizo la collection view la collection view a la página siguiente, pageControl aún apunta a la primera página. No cambia su valor.

self.collectionView.contentOffset.x valor self.collectionView.contentOffset.x , siempre dentro del marco (que es la primera página, incluso he pasado a la página siguiente), nunca pasa a la página siguiente.

¿Hice algo mal?


¿Estás teniendo en cuenta el espacio entre las células?

Prueba esto:

-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView { float currentPage = self.collectionView.contentOffset.x / self.collectionView.frame.size.width; self.pageControl.currentPage = ceil(currentPage); NSLog(@"Values: %f %f %f", self.collectionView.contentOffset.x, self.collectionView.frame.size.width, ceil(currentIndex)); }