计算哪个图像用户在水平集合视图上,启用分页

Posted

技术标签:

【中文标题】计算哪个图像用户在水平集合视图上,启用分页【英文标题】:count which image user is on horizontal collection view, paging enabled 【发布时间】:2017-03-25 04:29:58 【问题描述】:

我有一个名为 imageArray = ["one", "two", ... "eight"] 的数组。它用图像填充集合视图。前提条件:单元格在视图中居中,几乎占据了 collectionview/view 的大部分。图像视图位于顶部,仅比单元格小一点。好的,现在我需要计算用户在哪个图像上。因此,如果用户滚动到图像 3,我需要一种计数 3 的方法。当涉及到集合视图时,我是 ios 编程的新手,刚刚了解了它们,需要一些帮助。 这是一些代码(基本设置)

 class ViewController: UIViewController, UICollectionViewDelegate, UICollectionViewDataSource 

@IBOutlet weak var myCollectionView: UICollectionView!

@IBOutlet var mainView: UIView!

var imageArray = ["one", "two", "three", "four", "five", "six", "seven", "eight"]
     func numberOfSections(in collectionView: UICollectionView) -> Int 
    return 1

func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int 
    return imageArray.count

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell 
    let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath) as! UserFeedCollectionViewCell
    cell.myImage.image = UIImage(named: imageArray[indexPath.row])
    cell.myImage.layer.cornerRadius = 12.0
    cell.myImage.clipsToBounds = true
    return cell

【问题讨论】:

请参考此链接。 ***.com/questions/18649920/… 【参考方案1】:

解决方案

所以当你想知道哪个单元格在屏幕上可见时

    使用属性visibleCells,它将为您提供当前在屏幕上可见的单元格数组。

    使用属性indexPathsForVisibleItems,它将为您提供所有可见单元格的 indexPath 数组。

了解详情

UICollectionView 中,您正在使用dequeue 属性。 dequeue 属性的工作方式如下:

让你有 N 个单元格和 V 单元格在屏幕上是可能的,然后它会占用 V+1 单元格的内存,滚动后它会从早期细胞并将其交给新的可见细胞。

希望对你有帮助。

【讨论】:

【参考方案2】:

你应该这样做:

func scrollViewDidScroll(_ scrollView: UIScrollView) 
    var aPoint = CGPoint()
    collectionView.indexPathForItem(at: aPoint)

一旦你有了索引,比如说屏幕中心或 UICollectionView,你就可以找出行和图像。

【讨论】:

以上是关于计算哪个图像用户在水平集合视图上,启用分页的主要内容,如果未能解决你的问题,请参考以下文章

具有动态高度的集合视图水平方向

像Instagram这样的图像滑块?

从集合视图中删除项目

集合视图中的分页未正确居中

如何使用 Hibernate 解决错误“失败,因为启用了'在集合获取上的分页失败'已启用”?

在启用本机分页的情况下查看 UICollectionView 中的上一个/下一个单元格?