Я пытаюсь отследить элемент UICollectionView
, который выходит за экран, когда пользователь прокручивает представление коллекции, обновляя смещение прокрутки с каждой прокруткой.Проблема в том, что я не уверен, как рассчитать сумму прокрутки, поскольку iOS обрабатывает анимацию вида.Вот что я попробовал:
// Get rightmost cell visible:
const CGPoint edgeUpperRight = CGPointMake(CGRectGetMaxX(_collectionView.frame), CGRectGetMinY(_collectionView.frame));
const CGPoint boxLocation = [self.view convertPoint:edgeUpperRight toView:_collectionView];
NSIndexPath* indexPath = [_collectionView indexPathOfCellClosestToPoint:boxLocation];
UICollectionViewCell* cell = [_collectionView cellForItemAtIndexPath:indexPath];
const CGPoint oldCenter = cell.center;
// Scroll so that the rightmost cell becomes the leftmost:
[_collectionView scrollToItemAtIndexPath:indexPath
atScrollPosition:UICollectionViewScrollPositionLeft
animated:YES];
// Determine amount of scroll by subtracting old from new.
cell = [_collectionView cellForItemAtIndexPath:indexPath];
const CGPoint newCenter = cell.center;
// Scrolling RIGHT should move all cells to the LEFT:
const CGFloat dxScroll = oldCenter.x - newCenter.x;
Проблема этого подхода в том, что dxScroll
всегда равен нулю, потому что, очевидно, вызов scrollToItemAtIndexPath
не меняет данные сразу!Что я хотел бы знать, как я могу определить сумму прокрутки?Есть ли какой-то способ рассчитать его заранее или получить из iOS после прокрутки?
Мне нужно знать эту информацию, потому что я отслеживаю ячейку, которая выходит за экран во время прокрутки, и как только она выходит за экран, использование cellForItemAtIndexPath
больше не возвращает не-1010 * представление.Поэтому я пытаюсь вычислить и отследить ячейку (точнее, элемент, даже после того, как его ячейка будет переработана), когда пользователь прокручивает.Таким образом, когда мне нужно указать, где находится ячейка, например, с помощью анимации или некоторого пользовательского интерфейса, у меня правильная позиция, даже если ее координаты отрицательные / за кадром.