Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 检查collectionView单元格在collectionView上的显示是否超过50%_Swift_Uicollectionview_Uicollectionviewcell_Uicollectionviewlayout - Fatal编程技术网

Swift 检查collectionView单元格在collectionView上的显示是否超过50%

Swift 检查collectionView单元格在collectionView上的显示是否超过50%,swift,uicollectionview,uicollectionviewcell,uicollectionviewlayout,Swift,Uicollectionview,Uicollectionviewcell,Uicollectionviewlayout,我有一个UICollectionView(3*3网格),所以当我上下滚动时,有没有办法检测collection view单元格在屏幕上显示的高度是否超过其高度的50% let visibleRect = CGRect(origin: collectionView.contentOffset, size: collectionView.bounds.size) let visiblePoint = CGPoint(x: visibleRect.minX, y: visibleRect.midY)

我有一个UICollectionView(3*3网格),所以当我上下滚动时,有没有办法检测collection view单元格在屏幕上显示的高度是否超过其高度的50%

let visibleRect = CGRect(origin: collectionView.contentOffset, size: collectionView.bounds.size)
let visiblePoint = CGPoint(x: visibleRect.minX, y: visibleRect.midY)
let visibleIndexPath = collectionView.indexPathForItem(at: visiblePoint)
我试过这个,但似乎不起作用。有人对此有解决办法吗?

您可以要求

@property(nonatomic) CGPoint contentOffset; 
UIScrollView的,因为UICollectionView继承自它们

别忘了你的细胞有一个CALayer,它也知道可见的矩形

CGRect visiblerect = cell.layer.visibleRect;
if (visiblerect.size.height > (cell.frame.size.height * 0.5)) {
    // do stuff when cell is more visible then half its size
}

谢谢,伙计,是的,我知道contentOffset,但如何检查单元格在屏幕上的显示是否超过50%?当您知道单元格的frame.size.height和单元格周围的边距时,collectionView.contentSize;你甚至可以问UICollectionView visibleCells并做简单的数学运算。哈哈。对不起,编辑了我的答案。这是一个目标。。很容易翻译成swift。我想啊,太好了,我现在知道它是怎么工作的了,谢谢!还有一件事,我尝试使用cell.layer.visibleRect,但是对于显示小于50%的单元格,它总是返回单元格的实际高度?