如何垂直居中UICollectionView内容

Max*_*Dum 9 ios swift swift2

我试图动态地居中UICollectionView的内容,但是现有的解决方案都没有考虑到每行可能有多个单元格的事实.

在UINavigationBar中尝试过这个中心自定义标题?以及这里的两个解决方案:UICollectionView垂直居中,无济于事.

我很惊讶iOS默认情况下无法做到这一点,甚至更多的是无法获得当前显示的行数(这也解决了我的问题).此外,我无法获得内容的大小(而不仅仅是框架的大小),这也有助于我实现所需的效果.

我有这个:

 --------
|X X X X |
|X X X X |
|        |
|        |
 --------
Run Code Online (Sandbox Code Playgroud)

但我想要这个:

 --------
|        |
|X X X X |
|X X X X |
|        |
 --------
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激,

非常感谢.

Ale*_*tau 23

不确定为什么你不能得到内容的大小 - UICollectionView是一个UIScrollView子类,因此可以访问该contentSize属性.如果您只需将单元格置于中心位置,以防它们全部可见而不滚动,您只需执行以下操作:

collectionView.contentInset.top = max((collectionView.frame.height - collectionView.contentSize.height) / 2, 0)
Run Code Online (Sandbox Code Playgroud)

这也适用于单元格数量增长的情况,这样在屏幕上并不是所有单元格都可见,并且您开始使用垂直滚动 - 顶部插入将设置为0.


Dar*_*rko 5

现在我明白你的问题了。根据屏幕尺寸,您需要另一个插图以使其看起来居中。然后你必须手动计算它,但它应该不那么难。您知道可用空间、项目数和单元格大小。只需计算从顶部插入的部分。