Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

UICollectionView does not scroll

I have a UICollectionView set up with a UICollectionViewDataSource that currently provides six items. These are fewer than needed to fill the screen. The problem is that my collection view only scrolls when there are enough items to fill the screen (tested with 10, 20). When displaying fewer items it wont even do this bounce animation I am trying to get, it's just fixed.

- (void)viewWillAppear:(BOOL)animated {     [super viewWillAppear:animated];      [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(updateCollectionViewData) name:UIDocumentStateChangedNotification object:nil];      UICollectionViewFlowLayout *flowLayout = [[UICollectionViewFlowLayout alloc]init];     flowLayout.itemSize = CGSizeMake(160, 100);     flowLayout.minimumInteritemSpacing = 0;     flowLayout.minimumLineSpacing = 0;      self.collectionView = [[UICollectionView alloc]initWithFrame:self.view.bounds collectionViewLayout:flowLayout];     [self.collectionView registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:@"Cell"];     self.collectionView.delegate = self;     self.collectionView.dataSource = self;     self.collectionView.bounces = YES;     [self.view addSubview:self.collectionView]; }  - (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section {     return [self.collectionViewData count]; } - (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {      UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"Cell" forIndexPath:indexPath];      Expense *expense = [self.collectionViewData objectAtIndex:indexPath.row];      UILabel *label = [[UILabel alloc]initWithFrame:cell.bounds];     label.text = expense.value;     label.backgroundColor = [UIColor clearColor];     label.font = [UIFont fontWithName:@"Miso-Bold" size:30];     label.textAlignment = NSTextAlignmentCenter;     [cell addSubview:label];      cell.backgroundColor = [UIColor colorWithRed:1 - (indexPath.row / 30.0f) green:0 blue:1 alpha:1];      return cell; } 

Thanks for your help!

like image 862
Dario Avatar asked Apr 17 '13 20:04

Dario


People also ask

How do I make my UICollectionView scroll horizontal?

You need to reduce the height of UICollectionView to its cell / item height and select " Horizontal " from the " Scroll Direction " as seen in the screenshot below. Then it will scroll horizontally depending on the numberOfItems you have returned in its datasource implementation.

What is swift UICollectionView?

An object that manages an ordered collection of data items and presents them using customizable layouts.


2 Answers

bounces, despite it's name, isn't the right property to set. You also need to set alwaysBounceVertical and / or alwaysBounceHorizontal. From the documentation:

If this property is set to YES and bounces is YES, vertical dragging is allowed even if the content is smaller than the bounds of the scroll view. The default value is NO.


Note the confusing name in IB .. https://stackoverflow.com/a/18391029/294884

like image 191
jrturton Avatar answered Sep 23 '22 23:09

jrturton


With storyboards in attributes inspector for collection view "Bounces" and "Bounces Vertically" should be checked.

like image 42
Vladimir Shutyuk Avatar answered Sep 22 '22 23:09

Vladimir Shutyuk