Как прокрутить UICollectionView, не касаясь его, перетаскивая другой элемент в Swift? - PullRequest
0 голосов
/ 16 февраля 2020

My View

Привет! Я пытаюсь настроить CollectionView, который прокручивает только когда пользователь прокручивает другой элемент (просмотр со стрелками на изображении). Кроме того, в зависимости от того, какая ячейка находится в середине экрана, текст в метке должен измениться, чтобы соответствовать этой ячейке.

Я выполнил прокрутку следующим образом: когда пользователь перемещает представление со стрелками, коллекция также перемещается, но не прокручивается:

else if sender.state == .changed {
       if scrollButtonImageView.frame.maxY < scrollRangeView.frame.maxY {
       scrollButtonImageView.center = CGPoint(x: originalPosition.x, y: originalPosition.y + translation.y)

        collectionView.center.y = scrollButtonImageView.center.y

Мой вопрос: как правильно прокручивать CollectionView, не касаясь его, и узнать, какая ячейка находится в центре экрана, и мгновенно изменить данные в метках, когда в центр попала другая ячейка?

UPD: теперь я использую UISlider с тем же числом значения как коллекция. Но это не очень гладко. Мой код:

let currentValue = Int(sender.value)
collectionView.scrollToItem(at: IndexPath(row: currentValue, section: 0), at: .top, animated: true)

1 Ответ

0 голосов
/ 17 февраля 2020

Один план может состоять в том, чтобы описать прямоугольник для области, которую вы хотели бы считать видимой (возможно, как фиксированный прямоугольник над представлением коллекции), а затем использовать функции CGRect, содержащие или пересечение, чтобы определить, когда дочернее представление коллекции находится в целевой области.

...