页面控件在完全转到下一页之前切换页面
Page control switches page before completely going to the next page
我为集合视图创建了一个页面控件,每个集合视图单元格都是屏幕的高度和宽度。
这是页面控件的设置:
// 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
}
页面控件有一个小问题,检查一下:
请注意,当我还没有完全转到下一页时,页面控件是如何变化的,我该如何解决这个问题?
您需要使用 UIPageViewControllerDelegate 的方法 "didFinishAnimating: previousViewControllers: transitionCompleted:" 并使用帮助您更新页面的 transitionCompleted 布尔值
或
参考这个link使用UIPageControl
问题很简单,就是您在 willDisplay 单元格中设置了页面控件的 currentPage,关于它的文档说:
Tells the delegate that the specified cell is about to be displayed in the collection view.
这是一种在显示单元格之前调用的方法。
您应该根据自己的目的使用 scrollViewDidEndDecelerating(_ scrollView: UIScrollView)
。
感谢@Dhaval Raval,我在他提供的 link 中找到了答案,这里是:
func scrollViewDidScroll(_ scrollView: UIScrollView) {
let pageIndex = round(scrollView.contentOffset.x/view.frame.width)
pageControl.currentPage = Int(pageIndex)
}
我为集合视图创建了一个页面控件,每个集合视图单元格都是屏幕的高度和宽度。 这是页面控件的设置:
// 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
}
页面控件有一个小问题,检查一下:
请注意,当我还没有完全转到下一页时,页面控件是如何变化的,我该如何解决这个问题?
您需要使用 UIPageViewControllerDelegate 的方法 "didFinishAnimating: previousViewControllers: transitionCompleted:" 并使用帮助您更新页面的 transitionCompleted 布尔值
或
参考这个link使用UIPageControl
问题很简单,就是您在 willDisplay 单元格中设置了页面控件的 currentPage,关于它的文档说:
Tells the delegate that the specified cell is about to be displayed in the collection view.
这是一种在显示单元格之前调用的方法。
您应该根据自己的目的使用 scrollViewDidEndDecelerating(_ scrollView: UIScrollView)
。
感谢@Dhaval Raval,我在他提供的 link 中找到了答案,这里是:
func scrollViewDidScroll(_ scrollView: UIScrollView) {
let pageIndex = round(scrollView.contentOffset.x/view.frame.width)
pageControl.currentPage = Int(pageIndex)
}