Ios 使UICollectionViewCell显示在UICollectionView的中心

Ios 使UICollectionViewCell显示在UICollectionView的中心,ios,ios6,uicollectionview,uicollectionviewcell,Ios,Ios6,Uicollectionview,Uicollectionviewcell,我有一些单元格动态添加到UICollectionView。我想做的是更改这些单元格的插入,使它们显示在UICollectionView的中心。这是因为添加的单元格越多,单元格高度就会改变(这是一行UICollectionView) 如何获取对任何单元格的当前高度的引用,因为它们的形状都是相同的(仅当添加更多单元格时,其高度/宽度会发生变化,以继续适合一行) 一旦有了单元格高度的参考,我可以添加如下内容: self.tileCollectionView.bounds.size.height-CEL

我有一些单元格动态添加到
UICollectionView
。我想做的是更改这些单元格的插入,使它们显示在
UICollectionView
的中心。这是因为添加的单元格越多,单元格高度就会改变(这是一行
UICollectionView

如何获取对任何单元格的当前高度的引用,因为它们的形状都是相同的(仅当添加更多单元格时,其高度/宽度会发生变化,以继续适合一行)

一旦有了单元格高度的参考,我可以添加如下内容:
self.tileCollectionView.bounds.size.height-CELLHEIGHT/2——用作单元格的插图。

如果您使用的是网格样式布局,我会尝试以下方法:


为此,您需要实现UICollectionViewFlowLayoutDelegate。若要使它们堆叠,请将最小偏移量设置为单元格自身大小的负数。这可能需要一些尝试和错误。

如果所有单元格大小相同,并且假设您使用的是
UICollectionViewFlowLayout
,则可以使用此设置来获取它们的值尺寸:

UICollectionViewFlowLayout *flowLayout = (UICollectionViewFlowLayout *)self.collectionView.collectionViewLayout;
CGFloat width = flowLayout.itemSize.width;
CGFloat height = flowLayout.itemSize.height;
这是我使用
UICollectionViewFlowLayout
计算插图的方法:

- (UIEdgeInsets)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout insetForSectionAtIndex:(NSInteger)section {
    UICollectionViewFlowLayout *flowLayout = (UICollectionViewFlowLayout *)self.collectionView.collectionViewLayout;
    NSInteger numberOfCells = self.view.frame.size.width / flowLayout.itemSize.width;
    NSInteger edgeInsets = (self.view.frame.size.width - (numberOfCells * flowLayout.itemSize.width)) / (numberOfCells + 1);
    return UIEdgeInsetsMake(0, edgeInsets, 0, edgeInsets);
}
您还需要确保在屏幕旋转时使布局无效,以使其再次计算新的插入:

- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
{
    [super willRotateToInterfaceOrientation:toInterfaceOrientation duration:duration];
    [self.collectionView.collectionViewLayout invalidateLayout];
}

是的,我已经使用此方法更改单元格大小。我尝试的是从问题中的另一种方法中找出单元格大小。如何确定单元格大小,以便计算插图,使其在集合视图高度内居中对齐?您需要对单元格进行引用(或仅其大小)在某个地方。为了便于访问,我会把它放在一个变量中。好的,我接受我只是在单元格创建方法中放了一个变量来保存大小,以后再使用。谢谢
- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
{
    [super willRotateToInterfaceOrientation:toInterfaceOrientation duration:duration];
    [self.collectionView.collectionViewLayout invalidateLayout];
}