Как определить, сколько UICollectionView прокручивает ячейку для scrollToItemAtIndexPath? - PullRequest
0 голосов
/ 11 февраля 2019

Я пытаюсь отследить элемент 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 * представление.Поэтому я пытаюсь вычислить и отследить ячейку (точнее, элемент, даже после того, как его ячейка будет переработана), когда пользователь прокручивает.Таким образом, когда мне нужно указать, где находится ячейка, например, с помощью анимации или некоторого пользовательского интерфейса, у меня правильная позиция, даже если ее координаты отрицательные / за кадром.

...