UICollectionView添加了顶部边距

我想把一个UICollectionView控件水平显示拇指(只有一行拇指)。 出于某种原因,UICollectionView向下推动44个像素,所以“0”高度实际上是“44”。 我假设它可能会增加这个空间来考虑导航栏的高度(我只是假设)。 由于我的UICollectionView只在屏幕的一部分,我不想这个边缘。 有没有办法删除它?

这个问题可能在收集视图的内容插入。 尝试添加self.automaticallyAdjustsScrollViewInsets = NO; 进入视图控制器的viewDidLoad方法。

你也可以在故事板中设置。

确保您select了ViewController,然后取消“调整滚动查看插图”。

在这里输入图像说明

我还没有testing过这个IB / Storyboard方法在iOS6上做了什么。 使用代码方法,您需要检查VC是否响应该方法:

 if ([self respondsToSelector:@selector(setAutomaticallyAdjustsScrollViewInsets:)]) { self.automaticallyAdjustsScrollViewInsets = NO; } 

我发现补充:

 self.edgesForExtendedLayout = UIRectEdgeNone; 

在视图控制器中,我正在加载UICollectionView来解决问题,因为我无法获得接受的答案。

我发现这个答案的问题可以在这里find,并提供了一个非常深入和有趣的解释自动调整滚动查看插图之间的区别,扩展布局和边缘的扩展布局。

值得一读

也许你可以尝试使用集合视图的委托stream布局强制这个值为0:

 - (UIEdgeInsets)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout insetForSectionAtIndex:(NSInteger)section { return UIEdgeInsetsMake(PADDING_TOP, PADDING_LEFT, PADDING_BOTTOM, PADDING_RIGHT); } 

修改你的填充的值。

Swift 3:

首先你想automaticallyAdjustsScrollViewInsets设置viewControllersAdjustsScrollViewInsets为false:

 self.automaticallyAdjustsScrollViewInsets = false 

然后,你应该能够相应地调整边缘插入:

 func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAt section: Int) -> UIEdgeInsets { //top, left, bottom, right return UIEdgeInsets(top: 10, left: 0, bottom: 0, right: 0) } 

类似于@Sviatoslav答案,您可以尝试以下操作:

 - (void) viewDidLayoutSubviews { [super viewDidLayoutSubviews]; yourCollectionView.contentOffset = CGPointMake(0, 0); }