有人可以解释为什么UICollectionViewFlowLayout在下面的第一个节头之前添加额外空格吗?黄色边框是UICollectionView
框架。蓝色边框是UICollectionReusableView
部分标题框架:
额外空格仅出现在第一个部分标题上方,这是奇数。
据我所知,我把一切都归零了。这是我实例化流布局和集合视图的方式:
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}
感谢您的帮助。
答案 0 :(得分:0)
结果设置
myViewController.automaticallyAdjustsScrollViewInsets = NO;
解决了这个问题。请注意,此属性是在视图控制器上设置的,而不是滚动视图。显然,View Controller正在尝试通过自动添加20个顶级内容插入来计算状态栏。
这有点奇怪的是我的视图控制器是常规的UIViewController
而非 a UIScrollViewController
。所以视图控制器以某种方式检测到它包含UIScrollView
并且秘密地改变了内容插入。此行为默认情况下处于启用状态。
有关详细信息,请参阅docs,this SO answer也提供了大量详细信息。它也在iOS7 UI transition guide中讨论过。