如何不仅在 scrollView 结束减速时更改 UIPageControl 点?

How to change UIPageControl dot not only when scrollView did end decelerating?

我创建了一个包含 2 个项目的 Collection View 用户入职培训。

Collection View 有一个 UIPageControl,它显示当前活跃的页面用户。

问题是只有在过渡结束时,用户滑动到 next\previous 屏幕后,我才能更改活动 UIPageControl 点的状态。

这是现在的样子:GIF

我想要这样的行为,所以当您开始滑动时 UIPageControl 应该已经将其活动点更改为 next\previous,而我不必结束滑动(抬起手指)。

你可以在gif上查看我想要的:GIF

下面是我现在如何更改 UIPageControl 点:

func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) {
    let width = scrollView.frame.width
    currentPage = Int(scrollView.contentOffset.x / width)
    pageControl.currentPage = currentPage
}

应该如何修改我的代码,使用哪种方法来实现该行为?我在 Whosebug 上找不到任何类似的问题。

根据您的问题...

  • 您只有两个单元格(页)
  • 您希望页面控件反映哪个页面可见

而不是 scrollViewDidEndDecelerating,实施:

func scrollViewDidScroll(_ scrollView: UIScrollView) {
    let fw = scrollView.frame.width
    // get the percentage scrolled
    let pct = scrollView.contentOffset.x / fw
    // if it's less-than 50%, we're at page 0
    // else, we're at page 1
    pageControl.currentPage = pct < 0.5 ? 0 : 1
}