获取不包括半透明导航栏下的 indexPathsForVisibleItems()

Get indexPathsForVisibleItems() not including ones under a translucent navigation bar

我正在使用 Swift 2.2 开发针对 iOS 8.0+ 的应用。我有一个 UICollectionView,它根据设备方向显示不同数量的列。在 viewWillTransitionToSize 中,我使用 indexPathsForVisibleItems() 并找到最小的索引路径来确定第一个可见项目并在方向更改时滚动到该项目。

indexPathsForVisibleItems() 包含半透明导航栏下方的项目外,此方法效果很好,因此滚动可能会被几个单元格关闭。有什么方法可以知道哪些单元格是可见的,哪些单元格不在导航栏下方?

如果您想在旋转时滚动到特定的单元格,您可以获得该单元格在屏幕上的物理位置(采用半透明导航栏的高度和单元格的 y 坐标)并调用 indexPathForItemAtPoint.这将为您提供第一个实际可见的单元格(不在覆盖层下)。然后你可以告诉 UICollectionView 在旋转时滚动到那个单元格。