2013-03-04 3 views
6

У меня есть UICollectionView с включенным пейджингом, а отдельные виды, движущиеся по горизонтали, не выравниваются должным образом. Я убедился, что виды имеют ту же ширину, что и экран.Пейджинг в коллекции Просмотр не центрируется должным образом

Любые указатели на то, как заставить UICollectionView отображать точки зрения по горизонтали?

+1

вы разрешить это? У меня такие же проблемы. Ячейки находятся вне центра, и, когда я прокручиваю нецентральные соединения, чтобы сделать их хуже. – IkegawaTaro

+0

@IkegawaTaro такой же проблема здесь. Вы когда-нибудь это решали? –

ответ

3

Вы должны убедиться, что ваша секция вставки + межстрочный интервал + ширина ячейки все равно соответствует границам CollectionView. Я использую следующий метод на настраиваемую 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; 
} 

Вы должны помнить, что UICollectionView просто sublcass из UIScrollView, так что не знает, как вы хотите, чтобы ваша пагинацию работать. Перед UICollectionView вам придется обрабатывать всю эту математику при размещении ваших подпрограмм в UIScrollView.

+0

Где я могу разместить этот метод? и когда/где я его называю? –

0

Переопределить метод:

- (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]; 
} 
Смежные вопросы