Just a quick tip. If you’re subclassing UICollectionViewLayout or UICollectionViewFlowLayout and targetContentOffsetForProposedContentOffset:withScrollingVelocity: is not being called, check to make sure your UICollectionView does not setPagingEnabled: YES. If you have paging enabled on the collection view, that setting takes precedence over the targetContentOffset.