页面控制在完全进入下一页之前切换页面

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

Laravel 提交按钮不跳转到下一页和上一页

php 表单 - 2 个按钮(一个用于销毁会话并重新加载页面,一个用于进入下一页)

在进入下一页之前使用数据库验证表单