UICollectionVIew:我如何删除顶部第一个单元格的行上的空间
我在Interface Builder中有这样的安排,所有的属性都设置为零。
但是,当我在设备和模拟器上运行它时,它就像这样
细胞上方的空间来自哪里?
所以我尝试在这样的代码中设置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;
但我没有运气。
我怎样才能摆脱这个空间? 谢谢。
UICollectionView是具有contentInset
属性的UIScrollView类的后代,设置-20顶部插入修复问题
[self.calendarView setContentInset:UIEdgeInsetsMake(-20, 0, 0, 0)];
但是,问题来自UIViewController的automaticallyAdjustsScrollViewInsets
AdjustsScrollViewInsets属性。 通过文档:
默认值为YES,允许视图控制器响应状态栏,导航栏和工具栏或选项卡栏所消耗的屏幕区域来调整其滚动视图插图。 如果要自己pipe理滚动视图插入调整,请设置为“否”。
这就是为什么我们为状态栏调整内容插入。 禁用自动调整比结果图中不匹配的手动设置值更好。
[self setAutomaticallyAdjustsScrollViewInsets:NO];
另一种方法是select您的ViewController,并取消选中您的界面构build器中的调整滚动查看插图checkbox:
它基本上与以下代码行相同。 但是你必须立即在界面构build器中看到你的改变。
automaticallyAdjustsScrollViewInsets = false
以下是一些调整的答案:
我有一个收集视图占据了一小部分视图。 我用了:
self.automaticallyAdjustsScrollViewInsets = false
删除混乱了我的布局的顶部间距。 这段代码对我不起作用:
self.paperCollectionView.contentInset = UIEdgeInsetsMake(0, 0, 0, 0)
而这一个也不是:
self.paperCollectionView.contentInset = UIEdgeInsetsMake(-20, 0, 0, 0)
但是,这可能是因为我没有使用UICollectionViewController,我只是使用UICollectionView。
下面是代码的更大部分,以提供更多的上下文:
你也可以去
[self.calendarView setContentInset:UIEdgeInsetsMake(0, 0, 0, 0)]; [self setAutomaticallyAdjustsScrollViewInsets:NO];
在collections视图中添加了默认的collections视图标题滚动空间,您不需要从顶部添加-20,因为它可能反映在设备问题上
这个答案很奇怪,但是如果您在Interface Builder中工作,并且将View视图embeddedView Controller中,该视图控制器受控于作为导航控制器的根视图控制器的Tab Bar Controller,则此方法有效。
- 将一个工具栏添加到具有集合视图的视图控制器
- 移动层次结构中的工具栏,使其位于集合视图上方
如果“工具栏”位于“集合视图”上方,则“原型集合视图单元”的顶部将不会有空间到“集合视图”。 如果没有工具栏或工具栏位于集合视图下方,则集合视图顶部和集合视图单元之间将存在空间。 故事板预览和运行应用程序时都是如此。 表视图发生相同types的事情。
这是最近用Xcode版本8.3.3testing的
Swift 3:
self.automaticallyAdjustsScrollViewInsets = false