swift - 在 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 保持在原位,但似乎并非如此,或者我做错了什么..
我在这里想念什么?预先感谢您的回答!
解决方案
我建议您将 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 作为子级
推荐阅读
- json - 将 spark 数据框中的列聚合为 json
- python - Python - exec 和 timeit 函数之间的奇怪交互
- javascript - 如何获取 Input 的值并将其存储在另一个组件中?
- reactjs - 生成可用时隙的反应函数不会生成正确的时隙
- node.js - DynamoDB - 扫描不返回所有项目
- c# - WPF:如果 TextBox 中的文本发生更改,则更新按钮
- javascript - 活动类 {rcm.samapp/com.comp.android.ui....} 不存在
- reactjs - React Hooks Exhaustive-deps 异步无限循环
- shell - 修改 gupdatedb(GNU updatedb 命令)以插入并行命令
- javascript - Safari CMD+F 无法搜索列表中的文本