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.origincollectionView.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 如何将单元格滚动到屏幕外的主要内容,如果未能解决你的问题,请参考以下文章

iOS开发中OC和swift的对比

ios OC、swift混编制作framework

iOS-swift-基础篇1

iOS开发系列--Swift 3.0

swift 2016年 - iOS / PlayerViewController.swift

swift iOS URL Schemes Swift