我试图动态地将UICollectionView的内容居中,但是现有的解决方案都没有考虑到每行可能有多个单元格这一事实。
我已经尝试了这个center custom title in UINavigationBar?以及这里的两个解决方案:UICollectionView vertically Centred,无济于事。
我很惊讶iOS在默认情况下没有提供这样的方法,更惊讶的是,它不可能得到当前显示的行数(这也解决了我的问题)。而且,我不能得到内容的大小(不仅仅是框架的大小),这也可以帮助我达到预期的效果。
我有这个:
--------
|X X X X |
|X X X X |
| |
| |
--------
但我想要这个:
--------
| |
|X X X X |
|X X X X |
| |
--------
我们将非常感谢您的帮助,
多谢了。
6条答案
按热度按时间cfh9epnr1#
如果您有tabBar,请执行以下操作
如果不是,忽略tabBar减法并保留其余部分...
cx6n0qe32#
将此添加到viewDidLoad中
pxiryf3j3#
不知道为什么你不能得到内容的大小-
UICollectionView
是UIScrollView
的子类,因此可以访问contentSize
属性。如果你只需要将单元格居中,以防它们在不滚动的情况下都是可见的,你可以简单地执行以下操作:当单元格的数量增加,以至于不是所有的单元格都在屏幕上可见,并且您开始使用垂直滚动时,这也将起作用-顶部的插入将被设置为
0
。1l5u6lss4#
现在我明白你的问题了。根据屏幕的大小,你需要另一个插入,使它看起来居中。然后你必须手动计算它,但它应该不是那么难。你知道可用的空间,项目的数量和单元格的大小。只需要计算部分插入从顶部。
ff29svar5#
这是一个老线索,但我认为最明显的解决方案是缺乏。
我会简单地将UICollectionView放在一个全视图容器中,并将集合视图与自动布局对齐。
UICollectionView应采用最佳大小以适合单元格,然后保持居中。
2jcobegt6#
UICollectionView
具有返回数组的visibleCells
属性。您可以使用NSArray
的count
属性来获取可见单元格的数目。您应该能够在代理实现中实现
- collectionView:layout:insetForSectionAtIndex:
,以将顶部插入设置为您所追求的居中效果。如果需要,您还可以将
UICollectionViewFlowLayout
子类化并实现自己的布局逻辑。