UICollectionViewFlowLayout在第一个节头之前添加额外空格

时间:2014-10-01 02:44:39

标签: ios uicollectionview uicollectionviewlayout

有人可以解释为什么UICollectionViewFlowLayout在下面的第一个节头之前添加额外空格吗?黄色边框是UICollectionView框架。蓝色边框是UICollectionReusableView部分标题框架:

enter image description here

额外空格仅出现在第一个部分标题上方,这是奇数。

据我所知,我把一切都归零了。这是我实例化流布局和集合视图的方式:

UICollectionViewFlowLayout *flowLayout = [[UICollectionViewFlowLayout alloc] init];
flowLayout.itemSize = [BCFriendCell defaultSize];
flowLayout.minimumInteritemSpacing = 0.0f;
flowLayout.minimumLineSpacing = 0.0f;
flowLayout.headerReferenceSize = CGSizeMake(kScreenWidth, 63.0f);
flowLayout.footerReferenceSize = CGSizeZero;
flowLayout.sectionInset = UIEdgeInsetsZero;

CGRect collectionViewFrame = ...
collectionView = [[UICollectionView alloc] initWithFrame:collectionViewFrame collectionViewLayout:flowLayout];

collectionView.contentInset = UIEdgeInsetsZero;
[self.view addSubview:collectionView];

NSLog(@"contentOffset: %@", NSStringFromCGPoint(collectionView.contentOffset));

最后一个记录行打印出预期的

2014-09-30 19:23:28.974 MyApp[4468:60b] contentOffset: {0, 0}

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

结果设置

myViewController.automaticallyAdjustsScrollViewInsets = NO;

解决了这个问题。请注意,此属性是在视图控制器上设置的,而不是滚动视图。显然,View Controller正在尝试通过自动添加20个顶级内容插入来计算状态栏。

这有点奇怪的是我的视图控制器是常规的UIViewController 而非 a UIScrollViewController。所以视图控制器以某种方式检测到它包含UIScrollView并且秘密地​​改变了内容插入。此行为默认情况下处于启用状态。

有关详细信息,请参阅docsthis SO answer也提供了大量详细信息。它也在iOS7 UI transition guide中讨论过。