获取 indexPathsForVisibleItems() 不包括半透明导航栏下的那些
Posted
技术标签:
【中文标题】获取 indexPathsForVisibleItems() 不包括半透明导航栏下的那些【英文标题】:Get indexPathsForVisibleItems() not including ones under a translucent navigation bar 【发布时间】:2016-07-21 00:43:06 【问题描述】:我正在使用 Swift 2.2 开发针对 ios 8.0+ 的应用程序。我有一个UICollectionView
,它根据设备方向显示不同数量的列。在viewWillTransitionToSize
中,我使用indexPathsForVisibleItems()
并找到最小的索引路径来确定第一个可见项目并在方向更改时滚动到该项目。
除了indexPathsForVisibleItems()
包含位于半透明导航栏下方的项目外,这效果很好,因此滚动可能会偏离几个单元格。有什么方法可以知道哪些单元格是可见的,而不是在导航栏下?
【问题讨论】:
您可以注意到导航栏有多高,并在 UICollectionView 中获取该 CGPoint 处的单元格。然后您可以将该单元格滚动到顶部。 @Putz1103 啊,谢谢,我错过了indexPathForItemAtPoint
。你想写一个答案吗?
【参考方案1】:
如果您想滚动到旋转的特定单元格,您可以获取该单元格在屏幕上的物理位置(获取半透明导航栏的高度和单元格的 y 坐标)并调用indexPathForItemAtPoint
。这将为您提供第一个实际可见的单元格(不在叠加层下)。然后你可以告诉UICollectionView
滚动到那个旋转的单元格。
【讨论】:
以上是关于获取 indexPathsForVisibleItems() 不包括半透明导航栏下的那些的主要内容,如果未能解决你的问题,请参考以下文章