页面控制在完全进入下一页之前切换页面
Posted
技术标签:
【中文标题】页面控制在完全进入下一页之前切换页面【英文标题】:Page control switches page before completely going to the next page 【发布时间】:2019-12-10 15:02:02 【问题描述】:我为一个集合视图创建了一个页面控件,每个集合视图单元格都是屏幕的高度和宽度。 这是页面控件的设置:
// Setup the page control
func setupPageControl()
pageControl.pageIndicatorTintColor = cellColor
pageControl.currentPageIndicatorTintColor = themeColor
view.addSubview(pageControl)
addPageControlConstraints()
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int
pageControl.numberOfPages = collectionViewCellData.count
return collectionViewCellData.count
func collectionView(_ collectionView: UICollectionView, willDisplay cell: UICollectionViewCell, forItemAt indexPath: IndexPath)
pageControl.currentPage = indexPath.row
页面控件有个小问题,看看这个:
请注意,当我还没有完全进入下一页时,页面控件是如何变化的,我该如何解决这个问题?
【问题讨论】:
也许你需要scrollViewDidEndDecelerating?处理滚动结束,或者您可以在 scrollViewDidScroll 中处理偏移量以了解您想要更改某些内容的时刻 【参考方案1】:问题只是你在 willDisplay 单元格中设置页面控件的 currentPage,文档说:
告诉代理指定的单元格即将显示在集合视图中。
这是一个在显示单元格之前调用的方法。
您应该使用scrollViewDidEndDecelerating(_ scrollView: UIScrollView)
来达到您的目的。
【讨论】:
如果它解决了您的问题,请考虑接受我的回答。谢谢。【参考方案2】:您需要使用 UIPageViewControllerDelegate 的方法“didFinishAnimating: previousViewControllers:transitionCompleted:”并使用可帮助您更新页面的 transitionCompleted 布尔值
或
参考此链接使用UIPageControl
【讨论】:
嘿,嗯,我没有在页面控件上做太多工作,但是在这里,我的类不符合 uipageviewcontroller 我只是使用像这样的页面控件'let pageControl = UIPageControl()' 好的伙计,看看编辑后的答案并参考那个链接。 嘿,非常感谢,伙计,我所要做的就是复制和粘贴哈哈。【参考方案3】:感谢@Dhaval Raval,我在他提供的链接中找到了答案,这里是:
func scrollViewDidScroll(_ scrollView: UIScrollView)
let pageIndex = round(scrollView.contentOffset.x/view.frame.width)
pageControl.currentPage = Int(pageIndex)
【讨论】:
以上是关于页面控制在完全进入下一页之前切换页面的主要内容,如果未能解决你的问题,请参考以下文章
UICollectionView 没有完全填满页面,当它们应该在一个页面上时,如何阻止它将项目推送到下一页?
如何在 Chrome 中加载下一页之前断开 websocket