Hello! I'm trying to set up a CollectionView, that scrolls only when user scrolls another element (view with arrows on the image). Also, depending on which cell is in the middle of the screen, text in label should change to match this cell.
I've done the scrolling part this way: when user pans view with arrows, collection also moves, but not scrolls:
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
My question is: Which is the proper way to scroll CollectionView without touching it and how to observe which cell is in the center of the screen and change data in labels instantly, when another cell got into center?
UPD: Now I'm using UISlider with same number of values as collection. But it is not very smooth. My code:
let currentValue = Int(sender.value)
collectionView.scrollToItem(at: IndexPath(row: currentValue, section: 0), at: .top, animated: true)