I want to put a UICollectionView control that shows thumbs horizontally (only a single line of thumbs). For some reason the UICollectionView push the thumbs 44 pixels down, so the "0" height is actually "44". I assume it might be adding this space to consider the navigation bar height (I just assume). Since my UICollectionView is only on part of the screen, I don't want this margin. Is there a way to remove it?
问题:
回答1:
The issue may be in collection view's content insets.
Try to add self.automaticallyAdjustsScrollViewInsets = NO;
into view controller's viewDidLoad
method.
回答2:
You can set this in the storyboard too.
Make sure you've selected the ViewController, and then untick "Adjust Scroll View Insets".
I haven't tested what this IB/Storyboard method does on iOS6 though. With the code method you need to check that the VC responds to the method:
if ([self respondsToSelector:@selector(setAutomaticallyAdjustsScrollViewInsets:)]) {
self.automaticallyAdjustsScrollViewInsets = NO;
}
回答3:
I found that adding:
self.edgesForExtendedLayout = UIRectEdgeNone;
In the view controller I was loading the UICollectionView in solved the problem as I couldn't get the accepted answer to work.
The question I found this answer to can be found here and provides an extremely in-depth and interesting explanation of the difference between automatically adjusted scrolled view insets, extended layouts and edge for extended layouts.
Well worth a read
回答4:
Maybe you can try to force this value at 0 using the Delegate flow layout of collection view :
- (UIEdgeInsets)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout insetForSectionAtIndex:(NSInteger)section
{
return UIEdgeInsetsMake(PADDING_TOP, PADDING_LEFT, PADDING_BOTTOM, PADDING_RIGHT);
}
Modify the value of your padding.
回答5:
Swift 3:
First you want to set the viewControllers automaticallyAdjustsScrollViewInsets
to false:
self.automaticallyAdjustsScrollViewInsets = false
Then, you should be able to adjust the edge insets accordingly:
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAt section: Int) -> UIEdgeInsets {
//top, left, bottom, right
return UIEdgeInsets(top: 10, left: 0, bottom: 0, right: 0)
}
回答6:
Similar to @Sviatoslav answer, you can try the following:
- (void) viewDidLayoutSubviews {
[super viewDidLayoutSubviews];
yourCollectionView.contentOffset = CGPointMake(0, 0);
}