计算哪个图像用户在水平集合视图上,启用分页
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,你就可以找出行和图像。
【讨论】:
以上是关于计算哪个图像用户在水平集合视图上,启用分页的主要内容,如果未能解决你的问题,请参考以下文章