【问题标题】:UICollectionView- How to remove spacing above first cell?UICollectionView-如何删除第一个单元格上方的间距?
【发布时间】: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 的检查并为所有单元格返回相同的值,则它与顶部齐平。

有什么想法吗?

【问题讨论】:

  • 这是您在此处显示的第一个单元格标签或栏

标签: ios uicollectionview


【解决方案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

        【讨论】:

          猜你喜欢
          • 2014-07-10
          • 2013-06-18
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-05-01
          • 1970-01-01
          • 2013-03-09
          相关资源
          最近更新 更多