首页 > 解决方案 > 在 UICollectionView 中滚动时如何保持 pageControl 到位?

问题描述

我使用 viewDidLoad 中的这个函数将我的 UIPageControl 固定在集合视图控制器的底部。

 func setUpViewsAndConstraints(){
    collectionView.addSubview(pageControl)
    collectionView.bringSubviewToFront(pageControl)



    pageControl.centerXAnchor.constraint(equalTo: collectionView.centerXAnchor).isActive = true
    pageControl.bottomAnchor.constraint(equalTo: collectionView.safeAreaLayoutGuide.bottomAnchor, constant: 0).isActive = true


}

但是当我滚动单元格(水平)时,pageControl 停留在第一个单元格下方,当我移动到下一个单元格时被抛在后面......

我认为滚动时只有单元格移动,而 collectionView 保持在原位,但似乎并非如此,或者我做错了什么..

我在这里想念什么?预先感谢您的回答!

标签: swiftuicollectionviewuipagecontrol

解决方案


我建议您将 pageControl 保留在 collectionView 下而不是内部,因为我可以看到您正在将 pageControl 处的 bottomAnchor 添加到 collectionView 的同一底部;尝试将它们分开放置,并将顶部约束添加到您的 pageControl 到 collectionView 的底部,并将 centralAnchor 添加到您的 ViewController

pageControl.centerXAnchor.constraint(equalTo: viewController.centerXAnchor).isActive = true
pageControl.topAnchor.constraint(equalTo: collectionView.safeAreaLayoutGuide.bottomAnchor, constant: 0).isActive = true

并且可能是对您的视图的底部约束

pageControl.bottomAnchor.constraint(equalTo: viewController.safeAreaLayoutGuide.bottomAnchor, constant: 0).isActive = true

显然,对于这种情况,您应该有一个 UIViewController 父级,其中 UICollectionView 和 pageControl 作为子级


推荐阅读