检查 collectionViewCell 是否在 collectionView 上显示超过 50%

Check if a collectionViewCell is showing more than 50% on collectionView

我有一个带有(3*3 网格)的 UICollectionView,所以当我上下滚动时,有没有一种方法可以检测集合视图单元格是否在屏幕上显示超过其高度的 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 继承自它们。

并且不要忘记您的 Cell 有一个 CALayer,它也知道可见的 Rectangle。

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
}