UICollectionView-如何删除第一个单元格上方的间距?

Posted

技术标签:

【中文标题】UICollectionView-如何删除第一个单元格上方的间距?【英文标题】:UICollectionView- How to remove spacing above first cell? 【发布时间】:2013-07-26 07:52:30 【问题描述】:

UICollectionView- 如何删除第一个单元格上方的间距?

我的顶部插图 = 0,线条 = 10

- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath


if (indexPath.row == 0) 
    return CGSizeMake(collectionView.width, 44);

return CGSizeMake(300, 150);


- (UIEdgeInsets)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout insetForSectionAtIndex:(NSInteger)section

return UIEdgeInsetsMake(0, 10, 10, 10);

似乎与将第一个单元格设置为不同的大小有关

如果我删除 sizeForItemAtIndexPath 中对 row ==0 的检查并为所有单元格返回相同的值,则它与顶部齐平。

有什么想法吗?

【问题讨论】:

这是您在此处显示的第一个单元格标签或栏 【参考方案1】:

解决办法就是写在viewDidLoad里面

self.automaticallyAdjustsScrollViewInsets = NO;

【讨论】:

【参考方案2】:

我是按照以下方式进行的(在 ios7 上测试,55 是一个神奇的值):

#pragma mark - UICollectionViewDelegateFlowLayout

- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout referenceSizeForHeaderInSection:(NSInteger)section

    //-55 is a tweak value to remove top spacing
    return CGSizeMake(1, -55);

使用您的代码的替代方式:

- (UIEdgeInsets)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout insetForSectionAtIndex:(NSInteger)section

    return UIEdgeInsetsMake(-55, 10, 10, 10);

【讨论】:

55 在屏幕顶部上方约 45 处开始内容。【参考方案3】:

如果您想使用 Interface Builder,您可以取消选中 View Controller 的 Attribute Inspector 上的“Adjust Scroll View Insets”:

或使用 Amit 的答案以编程方式进行。

【讨论】:

【参考方案4】:

我不认为那是你的***插图。使用您应用的一些代码编辑您的问题。

如果它是 collectionView inset,那么它应该通过将 0 作为顶部 inset 传递来删除。

- (UIEdgeInsets)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout insetForSectionAtIndex:(NSInteger)section

    return UIEdgeInsetsMake(0, 10, 10, 10);

以下布局委托用于行间距。

- (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout minimumLineSpacingForSectionAtIndex:(NSInteger)section

    return 30;

【讨论】:

【参考方案5】:

使用 srtuct 和 spring 像这样设置 collectionview 自动调整大小的掩码,并确保将框架 y 设置为 0

【讨论】:

以上是关于UICollectionView-如何删除第一个单元格上方的间距?的主要内容,如果未能解决你的问题,请参考以下文章

如何从 UICollectionView 中正确删除单元格?

UICollectionview删除项目重新排列奇怪的动画

如何快速从 UICollectionView 中的 UIView 中删除焦点阴影?

如何使用 MVVM 和 RxSwift 编辑/删除 UICollectionView 单元格

如何删除 UICollectionView 中单元格之间的空间? [复制]

如何将 UICollectionView Image 一张一张删除