UICollectionVIew:如何删除顶部第一个单元格行上的空格

Sai*_*ail 40 ios uicollectionview uicollectionviewlayout

我在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;
Run Code Online (Sandbox Code Playgroud)

但我没有运气.

我怎么能摆脱这个空间?谢谢.

Ser*_*zha 105

UICollectionView是UIScrollView类的后代,它具有contentInset属性,设置-20 top inset修复了问题

[self.calendarView setContentInset:UIEdgeInsetsMake(-20, 0, 0, 0)];
Run Code Online (Sandbox Code Playgroud)

但是,问题来自UIViewController的automaticallyAdjustsScrollViewInsets属性.通过文件:

默认值为YES,允许视图控制器调整其滚动视图插入以响应状态栏,导航栏和工具栏或标签栏消耗的屏幕区域.如果要自己管理滚动视图插入调整,请设置为NO.

这就是我们为状态栏调整内容插入的原因.最好禁用自动调整,而不是手动设置值,结果图片中不匹配.

[self setAutomaticallyAdjustsScrollViewInsets:NO];
Run Code Online (Sandbox Code Playgroud)

  • 好吧最后我知道是什么导致这个...我必须设置self.automaticallyAdjustsScrollViewInsets = NO; 它会正常工作.(只是从插入量中注意到它与状态栏高度相等) (4认同)

Yuc*_*ong 72

另一种方法是选择ViewController并取消选中界面构建器中的Adjust Scroll View Insets复选框:

在此输入图像描述

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

automaticallyAdjustsScrollViewInsets = false
Run Code Online (Sandbox Code Playgroud)


Bog*_*van 17

iOS 11 已弃用automaticallyAdjustsScrollViewInsets,因此collectionView.contentInsetAdjustmentBehavior = .never建议使用。


Rob*_*ack 13

以下是一些快速回答:

我有一个集合视图占据了视图的一小部分.我用了:

self.automaticallyAdjustsScrollViewInsets = false
Run Code Online (Sandbox Code Playgroud)

删除弄乱我的布局的顶部间距.这段代码对我不起作用:

self.paperCollectionView.contentInset = UIEdgeInsetsMake(0, 0, 0, 0)
Run Code Online (Sandbox Code Playgroud)

这个也没有:

self.paperCollectionView.contentInset = UIEdgeInsetsMake(-20, 0, 0, 0)
Run Code Online (Sandbox Code Playgroud)

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

这是代码的更大部分,以提供更多上下文: 在此输入图像描述


Kir*_* A. 8

你也可以去

[self.calendarView setContentInset:UIEdgeInsetsMake(0, 0, 0, 0)];
[self setAutomaticallyAdjustsScrollViewInsets:NO];
Run Code Online (Sandbox Code Playgroud)

在集合视图上添加了默认的集合视图标题滚动空间,您无需从顶部添加-20,因为它可能反映在设备问题上