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

时间:2013-07-26 07:52:31

标签: ios uicollectionview

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

我有顶部inset = 0,而行= 10

enter image description here

- (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中删除对行== 0的检查,并为所有单元格返回相同的内容,则它与顶部齐平。

有什么想法吗?

5 个答案:

答案 0 :(得分:10)

解决方案只是写在viewDidLoad

self.automaticallyAdjustsScrollViewInsets = NO;

答案 1 :(得分:8)

我按照以下方式做到了(在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);
}

答案 2 :(得分:7)

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

Uncheck here.

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

答案 3 :(得分:1)

我不认为这是你的顶级插图。使用您已应用的一些代码编辑您的问题。

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

- (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;
}

答案 4 :(得分:0)

使用srtuct和spring设置collectionview自动调整掩码,并确保将y设置为0

enter image description here