2013-04-17 125 views
45

我有一個UICollectionView設置UICollectionViewDataSource,目前提供六個項目。 這些比填寫屏幕所需要的要少。問題是我的收藏視圖只在有足夠的項目填滿屏幕時滾動(用10,20測試)。 當顯示更少的項目,它甚至不會做這個反彈動畫,我試圖得到它只是固定的。UICollectionView不滾動

- (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; 
} 

感謝您的幫助!

回答

151

bounces,儘管它的名稱,是不是正確的屬性來設置。您還需要設置alwaysBounceVertical和/或alwaysBounceHorizontal。從文檔:

如果這個屬性設置爲YES和反彈是YES,垂直允許拖動即使含量大於滾動視圖的範圍較小。默認值是NO。


注意,在IB混亂的名字.. https://stackoverflow.com/a/18391029/294884

+0

這是正確的答案 - OP應該接受這個答案。 –

+0

偉大的技巧感謝 – Fattie

+0

謝謝,它像一個魅力:) – evya

4

UICollectionView的高度設置爲UIView的大小會使您的滾動問題被禁用。如果UICollectionView的像素高度爲568像素,則只有在其內容超過568像素的情況下才需要滾動。您應該將其設置爲其所在視圖的高度(與寬度相同)。

希望它可以幫助你。

+0

在IB中添加約束以保持UICollectionView邊緣與其超級視圖的邊緣相同解決了我的問題 – Colin

9

隨着屬性檢查器集合視圖「退回」和「退回垂直」故事板應該進行檢查。