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));
}