Swift iOS -CollectionView 如何将单元格滚动到屏幕外
Posted
技术标签:
【中文标题】Swift iOS -CollectionView 如何将单元格滚动到屏幕外【英文标题】:Swift iOS -CollectionView how to scroll cells off of screen 【发布时间】:2018-06-09 18:01:24 【问题描述】:我有一个包含 4 个单元格的 collectionView。由于集合视图内只有 4 个单元格,因此不会再滚动。
向上滚动时,我想将 4 个单元格从屏幕上滚动出来(collectionView 将显示为空)。一旦单元格离开屏幕,我希望滚动停止,我不想永远滚动。向下滚动时,我想将 4 个单元格滚动回场景中。
我尝试更改 collectionView.bounds.origin
和 collectionView.contentSize.height
但均未成功,我仍然无法将 4 个单元格滚动到屏幕之外。
我总是可以添加透明单元格,但这似乎是一种 hack。
实现此目的的适当方法是什么?
override func viewDidLoad()
super.viewDidLoad()
let layout = UICollectionViewFlowLayout()
layout.sectionInset = UIEdgeInsetsMake(0, 0, 0, 0)
layout.scrollDirection = .vertical
collectionView = UICollectionView(frame: view.frame, collectionViewLayout: layout)
collectionView.delegate = self
collectionView.dataSource = self
collectionView.alwaysBounceVertical = true
collectionView.backgroundColor = .white
collectionView.register(MyCell.self, forCellWithReuseIdentifier: myCell)
view.addSubview(collectionView)
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int
return 4
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: myCell, for: indexPath) as! MyCell
cell.textLabel.text = "Hello"
return cell
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize
return CGSize(width: view.frame.width, height: 44)
【问题讨论】:
【参考方案1】:你可以使用滚动视图的contentInset
:
collectionView?.contentInset.bottom = collectionView?.frame.height ?? 0
【讨论】:
感谢您的帮助。我会在大约 15 分钟后尝试并回复您 我应该在哪里设置那行代码在 -in scrollViewDidScroll? 在viewDidLayoutSubviews
试试吧。
它有效,但有 1 个问题。它永远滚动。一旦 4 个单元格离开屏幕,我希望它停止。我要赞成这个答案,因为它确实回答了这个问题。我要调整问题以反映我没有预料到的情况。
我只是在那里尝试过,它没有工作。一旦我在 viewDidLoad 中设置它就不会滚动以上是关于Swift iOS -CollectionView 如何将单元格滚动到屏幕外的主要内容,如果未能解决你的问题,请参考以下文章