如何不仅在 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
}
我创建了一个包含 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
}