2014-05-21 42 views
31

我在Interface Builder中有这种安排,所有属性都设置为零。UICollectionVIew:我如何删除顶部第一个单元格的行上的空间

enter image description here

然而,当我器件和模拟器上运行它,它看起来像这样

enter image description here

哪里单元上方的空间从何而来?

所以我尝试在代码中设置这些属性UICollectionViewFlowLayout这样

UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; 
    layout.headerReferenceSize = CGSizeZero; 
    layout.footerReferenceSize = CGSizeZero; 
    layout.sectionInset = UIEdgeInsetsMake(0, 0, 0, 0); 
    layout.minimumInteritemSpacing = 0; 
    layout.minimumLineSpacing = 0; 
    layout.itemSize = CGSizeMake(103, 119); 

    self.calendarView.collectionViewLayout = layout; 

,但我有没有运气。

我该如何摆脱那个空间? 谢谢。

回答

93

UICollectionView是具有contentInset财产的UIScrollView类的后裔,设定-20顶部边界解决问题

[self.calendarView setContentInset:UIEdgeInsetsMake(-20, 0, 0, 0)]; 

然而,的问题来自于UIViewController的automaticallyAdjustsScrollViewInsets财产。 通过文档:

缺省值是YES,这允许视图控制器来调整响应于由所述状态栏,导航栏所消耗的屏幕区域的滚动视图的插图,和工具栏或标签栏。如果您想要自己管理滚动视图插入调整,请将其设置为NO。

这就是为什么我们为状态栏调整内容插入的原因。禁用自动调整比结果图中不匹配的手动设置值更好。

[self setAutomaticallyAdjustsScrollViewInsets:NO]; 
+0

它无法正常工作。 – SaintTail

+0

虽然它导致我正确的答案。 (-20,0,0,0)我必须设置边缘插入。不知道为什么它是需要的。但是,谢谢。你可以编辑你的答案,以便我可以投票。 – SaintTail

+0

好的,我尽力帮助:)祝你好运! – Seryozha

7

你也可以去

[self.calendarView setContentInset:UIEdgeInsetsMake(0, 0, 0, 0)]; 
[self setAutomaticallyAdjustsScrollViewInsets:NO]; 

有默认集合视野头滚动空间加在集合视图,你不需要从顶部添加-20,因为它可以在设备上反映问题

10

下面是一些调整,迅速回答:

我有采取集合视图占据了一小部分视野。我用:

self.automaticallyAdjustsScrollViewInsets = false 

删除顶部间距,搞乱了我的布局。这段代码并没有为我工作:

self.paperCollectionView.contentInset = UIEdgeInsetsMake(0, 0, 0, 0) 

而且也不是这一个:

self.paperCollectionView.contentInset = UIEdgeInsetsMake(-20, 0, 0, 0) 

但因为我没有使用UICollectionViewController可能是,我只是用UICollectionView。

下面的代码的较大部分给予更多的上下文: enter image description here

+0

您是否找到解决方案?我只能看到问题中的增强。我使用'UIViewController'而不是'UICollectionViewControllel' – umair151

+0

所以我使用'self.automaticallyAdjustsScrollViewInsets = false',并照顾我的间距问题。你能多解释一下,也许我可以帮助更多? –

61

另一种方式是选择你的ViewController和取消选中该复选框调整滚动查看插图在界面生成器:

enter image description here

它基本上与以下代码行相同。但是您必须立即在界面构建器中看到您的更改。

automaticallyAdjustsScrollViewInsets = false 
+2

它完成这项工作。谢谢 –

1

这个答案是怪异,但它的作品,如果你在Interface Builder工作,有一个集合查看嵌入视图控制器是一个标签栏控制器的控制是一个根视图控制器下导航控制器。

  • 添加工具栏到具有收藏查看
  • 移动工具栏在层次结构,使得它上面的集合视图

如果工具栏上面的集合视图的视图控制器,从原型集合视图单元的顶部到集合视图将没有空间。如果没有工具栏或工具栏位于集合视图下方,则集合视图顶部与集合视图单元之间会有空间。在故事板预览和运行应用程序时都是如此。 Table Views发生同样类型的事情。

这是最近在Xcode 8.3.3版本 Collection View Cells and Toolbar Dependency

0

斯威夫特测试3:

self.automaticallyAdjustsScrollViewInsets =假

相关问题