2014-02-19 4 views
1

Я использую представление коллекции в первый раз, и я не знаю, как сделать что-то ..UICollectionview и клетка

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

Я хочу, чтобы представление коллекции отображало только четыре ячейки на экране в любое время. Когда изображение загружается, я получаю четыре ячейки, без проблем. Однако, когда я прокручиваю по горизонтали, я получаю 4 с половиной ячейки. никогда не четыре.

Есть ли способ рассказать коллекции, чтобы показывать только четыре ячейки за раз?

+0

сделать снимок коллекции меньше? – Marc

ответ

1

Как Marc said, вы можете просто контролировать размер своего вида коллекции.

Если изменить размер нецелесообразно, вы можете установить вставку содержимого в виде коллекции.

CGFloat cellWidth = … // Cell width 
CGFloat collectionViewWidth = … // Collection View Width 
CGFloat desiredCollectionViewWidth = cellWidth * 4.0; 

CGFloat horizontalInset = collectionViewWidth - desiredCollectionViewWidth; 

// To center the collection view 
UIEdgeInsets inset = UIEdgeInsetsMake(0, horizontalInset/2, 0, horizontalInset/2); 
self.collectionView.contentInset = inset; 

// Or, to left justify the collection view 
UIEdgeInsets inset = UIEdgeInsetsMake(0, 0, 0, horizontalInset); 
self.collectionView.contentInset = inset; 
+0

Это работает очень хорошо. нужно немного подкорректировать, но это решает проблему. Спасибо! – Tander

2

enter image description here

enter image description here

вы можете статически добавить количество клеток (элементов) в целях сбора, если не требуется динамическое.

здесь Я использую направление прокрутки по горизонтали, вы можете сделать это в вертикальном положении. надеюсь, что это поможет

вы можете сделать так же тоже. Просто скопируйте этот код в свой контроллер и внесите некоторые изменения.

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView{ 

    NSIndexPath *indexPath; 
    for (UICollectionViewCell *cell in [self.collectionView visibleCells]) { 
     indexPath = [self.collectionView indexPathForCell:cell]; 
     NSLog(@"%@",indexPath); 
    } 

    UICollectionViewCell *cell =(UICollectionViewCell *)[self.collectionView cellForItemAtIndexPath:indexPath]; 

    //finally get the rect for the cell 
    CGRect cellRect = cell.frame; 


    self.collectionView.contentOffset = CGPointMake(self.collectionView.contentOffset.x, cellRect.origin.y); 
} 
+1

Спасибо, но мне нужно, чтобы они были динамичными, это его веб-контент. Хорошая идея для статических данных. – Tander

+0

@ Тандер, если ваши ячейки являются динамическими, тогда вы можете использовать приведенный выше код. –

Смежные вопросы