Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

UICollectionVIew: How can I remove the space on top first cell's row?

I have this arrangement in Interface Builder, all properties are set to zero.

enter image description here

However, when I run it on both device and simulator it appears like this

enter image description here

Where is the space above the cells come from?

So I try to set these properties for UICollectionViewFlowLayout in code like this

UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init];     layout.headerReferenceSize = CGSizeZero;     layout.footerReferenceSize = CGSizeZero;     layout.sectionInset = UIEdgeInsetsMake(0, 0, 0, 0);     layout.minimumInteritemSpacing = 0;     layout.minimumLineSpacing = 0;     layout.itemSize = CGSizeMake(103, 119);          self.calendarView.collectionViewLayout = layout; 

but I have no luck.

How can I get rid of that space?

like image 386
SaintTail Avatar asked May 21 '14 14:05

SaintTail


People also ask

How do I remove cells from collection view?

Build and Run the project and select the Edit Button. Select a few cells and press the Trash button to remove the items.


2 Answers

UICollectionView is descendant of UIScrollView class which has contentInset property, setting -20 top inset fixes the problem

[self.calendarView setContentInset:UIEdgeInsetsMake(-20, 0, 0, 0)]; 

However, the problem comes from UIViewController's automaticallyAdjustsScrollViewInsets property. By documentation:

Default value is YES, which allows the view controller to adjust its scroll view insets in response to the screen areas consumed by the status bar, navigation bar, and toolbar or tab bar. Set to NO if you want to manage scroll view inset adjustments yourself.

That's why we get adjusted content insets for status bar. It's better to disable automatically adjusting than manually set value which doesn't match in result picture.

[self setAutomaticallyAdjustsScrollViewInsets:NO]; 
like image 170
Seryozha Avatar answered Oct 09 '22 18:10

Seryozha


Another way is to select your ViewController and uncheck the checkbox Adjust Scroll View Insets in your interface builder:

enter image description here

It is essentially the same as the following line of code. But you got to see your changes right away in the interface builder.

automaticallyAdjustsScrollViewInsets = false 
like image 32
Yuchen Avatar answered Oct 09 '22 19:10

Yuchen