UICollectionView-如何删除第一个单元格上方的间距?
我有顶部inset = 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中删除对行== 0的检查,并为所有单元格返回相同的内容,则它与顶部齐平。
有什么想法吗?
答案 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”:
或者使用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