2013-03-04 16 views
6

Mam UICollectionView z włączoną stronicowaniem, a poszczególne widoki poruszające się w poziomie nie są prawidłowo wyśrodkowane. Upewniłem się, że widoki są tej samej szerokości co ekran.Widok stronicowania w widoku kolekcji nie jest prawidłowo wyśrodkowywany

Jakieś wskazówki, jak zmusić UICollectionView do horyzontalnego wyświetlania widoków?

+1

pan rozwiązać ten problem? Mam te same problemy. Komórki są poza centrum, a gdy przewijam niecentryczne związki, by to pogorszyć. – IkegawaTaro

+0

@IkegawaTaro ten sam problem tutaj. Czy kiedykolwiek go rozwiązałeś? –

Odpowiedz

3

Musisz upewnić się, że twój fragment wstawki + odstęp między wierszami + szerokość komórki są równe dokładnie granicom widoku CollectionView. Używam następujący sposób na niestandardowym UICollectionViewFlowLayout sublcass:

- (void)adjustSpacingForBounds:(CGRect)newBounds { 
    NSInteger count = newBounds.size.width/self.itemSize.width - 1; 

    CGFloat spacing = (newBounds.size.width - (self.itemSize.width * count))/count; 

    self.minimumLineSpacing = spacing; 

    UIEdgeInsets insets = self.sectionInset; 
    insets.left = spacing/2.0f; 
    self.sectionInset = insets; 
} 

Trzeba pamiętać, że UICollectionView tylko sublcass z UIScrollView, więc nie wiem, jak chcesz, aby paginacja do pracy. Przed UICollectionView musiałbyś obsłużyć całą tę matematykę podczas układania subskrybowanych widoków UIScrollView.

+0

gdzie umieścić tę metodę? i kiedy/gdzie to nazwać? –

0

Zastąpić metodę:

- (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset { 
    *targetContentOffset = scrollView.contentOffset; // set acceleration to 0.0 
    float pageWidth = (float)self.articlesCollectionView.bounds.size.width; 
    int minSpace = 10; 

    int cellToSwipe = (scrollView.contentOffset.x)/(pageWidth + minSpace) + 0.5; // cell width + min spacing for lines 
    if (cellToSwipe < 0) { 
     cellToSwipe = 0; 
    } else if (cellToSwipe >= self.articles.count) { 
     cellToSwipe = self.articles.count - 1; 
    } 
    [self.articlesCollectionView scrollToItemAtIndexPath:[NSIndexPath indexPathForRow:cellToSwipe inSection:0] atScrollPosition:UICollectionViewScrollPositionLeft animated:YES]; 
} 
Powiązane problemy