我正在使用Swift 2.2开发一款针对iOS 8.0+的应用程序。我有一个UICollectionView
,它根据设备方向显示不同数量的列。在viewWillTransitionToSize
中,我使用indexPathsForVisibleItems()
并找到最小的索引路径来确定第一个可见项目,并在方向更改时滚动到该项目。
除了indexPathsForVisibleItems()
包括半透明导航栏下的项目,因此滚动可能会被几个单元格关闭之外,这一操作效果很好。有没有办法知道哪些单元格是可见的,而不是在导航栏下?
如果您想在旋转时滚动到特定的单元格,您可以在屏幕上获得该单元格的物理位置(取半透明导航栏的高度和单元格的y坐标)并调用indexPathForItemAtPoint
。这将为您提供第一个实际可见的单元格(不在覆盖下)。然后,您可以告诉UICollectionView
在旋转时滚动到该单元格。