我的设置:
已打开分页的ScrollView。我有3个子视图(代表页面)
一个CollectionView,其中包含3个带有标签的单元格。这些标签包含我3页的标题。
我要做什么:
将页面滚动到其中后,我希望关联的页面标题捕捉到中间。当前标题紧靠左侧,这不是我想要的。
当前情况如何:
我的代码:
func scrollViewDidScroll(_ scrollView: UIScrollView) {
// currentPage Int 0, 1, and 2 represent my 3 pages
let indexPath = IndexPath(item: scrollView.currentPage, section: 0)
// This is my collectionView with the cells that contain titles
let collectionView = self.homeViewModel.menuTabsCollectionView
// Here I get the width of the cell for the current page
guard let currentCellWidth = collectionView.cellForItem(at: indexPath)?.frame.size.width else {
return
}
// Disable vertical scroll
scrollView.contentOffset.y = 0
print("OFFSET \(scrollView.contentOffset.x)")
print("CELL WIDTH \(currentCellWidth)")
if scrollView.currentPage == 0 {
collectionView.contentOffset.x = scrollView.contentOffset.x / 3
}
if scrollView.currentPage == 1 {
collectionView.contentOffset.x = scrollView.contentOffset.x / 3
}
if scrollView.currentPage == 2 {
collectionView.contentOffset.x = scrollView.contentOffset.x / 3
}
}
到目前为止,我所做的是将scrollViews contentOffset锁定到collectionView的contentOffset,并且我已经放慢了collectionView与滚动视图一起滚动的速度。
我需要使用collectionView单元格的宽度以及scrollView的contentOffset来计算collectionView应与scrollView成比例地移动多少,并使每个页面的标题都在中间居中页面滚动到视图中的时间。
每个页面都有if语句的原因是,公式中使用的宽度会根据滚动到哪个页面而有所不同。
我似乎无法弄清楚如何获得中心头衔。如果我使用scrollToCellAtIndexPath委托方法,则会失去视差效果。
我非常感谢您在这里提供的一些输入/答案。
预先感谢