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 中的 UIView 中删除焦点阴影?
如何使用 MVVM 和 RxSwift 编辑/删除 UICollectionView 单元格