2013-04-17 16 views
45

स्क्रॉल नहीं करता है मेरे पास UICollectionViewUICollectionViewDataSource है जो वर्तमान में छह आइटम प्रदान करता है। स्क्रीन भरने के लिए ये आवश्यक से कम हैं। समस्या यह है कि मेरा संग्रह दृश्य केवल स्क्रॉल करता है जब स्क्रीन भरने के लिए पर्याप्त आइटम होते हैं (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 सेट करने की भी आवश्यकता है। प्रलेखन से:

इस संपत्ति हाँ और बाउंस करने के लिए सेट है, तो हाँ, ऊर्ध्वाधर खींचने अनुमति दी है है, भले ही सामग्री स्क्रॉल दृश्य की सीमा से छोटा है। यह डिफ़ॉल्ट मान नहीं है।


नोट आईबी में भ्रामक नाम .. https://stackoverflow.com/a/18391029/294884

+0

यह सही जवाब है - ओपी को इसे उत्तर के रूप में स्वीकार करना चाहिए। –

+0

महान टिप धन्यवाद – Fattie

+0

धन्यवाद, यह एक आकर्षण की तरह काम करता है :) – evya

4

की ऊंचाई UIView के आकार को सेट करने से आपकी स्क्रॉलिंग समस्या अक्षम हो जाएगी। यदि UICollectionView 568 पिक्सल लंबा है तो इसमें केवल 568 पिक्सल की अधिक सामग्री होने पर स्क्रॉल करने की आवश्यकता होगी। आपको इसे उस दृश्य की ऊंचाई पर सेट करना चाहिए जिसमें यह शामिल है (चौड़ाई के समान)।

उम्मीद है कि यह आपकी मदद करता है।

+0

आईआईसी में यूआईसीओलेक्शन व्यू किनारों को रखने के लिए आईबी में बाधा डालकर मेरे पर्यवेक्षण के किनारों के समान ही मेरी समस्या हल हो गई है – Colin

9
संग्रह दृश्य "बाउंस यानी" और "बाउंस यानी खड़ी" के लिए गुण निरीक्षक में स्टोरीबोर्ड के साथ

जाँच की जानी चाहिए।