2014-08-14 3 views
0

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

Это изображение, где автопрокрутка должны прийти, потому что между клетками: enter image description here

А вот фотография желаемой позиции посадки:

enter image description here

Если вы, ребята, есть что-нибудь, что кул d помочь, что будет очень признателен. Если вы думаете, что можете помочь, но не понимаете, что я прошу, просто дайте мне знать.

Заранее спасибо.

ответ

0

Нет простого способа сделать это, вам нужно воссоздать функциональность paging. Вы должны посмотреть на это link. Ниже то, что это может выглядеть, как в вашем случае, если предположить, что это вертикальная полоса прокрутки:

#pragma mark - UIScrollViewDelegate 

- (void)scrollViewWillEndDragging:(UICollectionView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset { 

    float cellHeight = 130; // Replace this value with your cell height + line spacing between cells 
    float val = (scrollView.contentOffset.y + scrollView.contentInset.top)/cellHeight; 
    int newPage = val; 


    if (velocity.x == 0) { 
     newPage = floor((targetContentOffset->y - cellHeight/2)/cellHeight) + 1; 

    } else { 
     if (velocity.x < 0) { 

      CGFloat diff = val - newPage; 
      if (diff > .5f) 
       newPage++; 
     } 

     newPage = MAX(0, velocity.x > 0 ? newPage + 1 : newPage - 1); 

     if (newPage > scrollView.contentSize.height/cellHeight) 
      newPage = ceil(scrollView.contentSize.height/cellHeight) - 1.f; 
    } 

    *targetContentOffset = CGPointMake(targetContentOffset->x, (int)(newPage * cellHeight)); 
} 
0

Вы могли бы попытаться получить видимые ячейки и выделите один из следующих соседей вручную.

что-то вроде:

NSArray *visiblePaths = [self.collectionView indexPathsForVisibleItems]; 
[self.collectionView scrollToItemAtIndexPath:[visiblePaths firstObject] atScrollPosition:UICollectionViewScrollPositionBottom animated:YES]; 
Смежные вопросы