2012-12-17 6 views
29

मैं थंबनेल की क्षैतिज स्क्रॉल करने योग्य सूची प्रदर्शित करने के लिए UICollectionView का उपयोग करना चाहता हूं, हालांकि, मैं यह एक पंक्ति बनना चाहता हूं। एक और दृश्य पर, मैं UICollectionView में थंबनेल प्रदर्शित कर रहा हूं लेकिन यह एक लंबवत स्क्रॉल करता है और यह एक ही कॉलम में है।UICollectionView: वन पंक्ति या कॉलम

वर्तमान में, जिस तरह से मैं इसे कर रहा हूं, संग्रह दृश्य के आकार को बदलकर केवल एक आइटम के लिए काफी बड़ा हो सकता है, इसलिए यह ऑटोवॉप्स और काम करता है, लेकिन अब मैं परिवर्तनीय आकार वाले आइटमों से निपट रहा हूं, इसलिए यह ' अब काम नहीं करते हैं।

आप UICollectionView एक पंक्ति या स्तंभ प्रदर्शित करते हैं?

उत्तर

25

मुझे लगता है कि आप Flow Layout में निर्मित का उपयोग कर रहे हैं। हालांकि, आपके मामले के लिए, आपको एक कस्टम UICollectionView Layout बनाना चाहिए। यह UICollectionViewFlowLayout के उपवर्ग करें और init विधि में इस कोड जोड़ें:

- (id)init { 
    if ((self = [super init])) { 
     self.scrollDirection = UICollectionViewScrollDirectionHorizontal; 
     self.minimumLineSpacing = 10000.0f; 
    } 
    return self; 
} 

minimumLineSpacing यह एक पंक्ति यहाँ बनाने की कुंजी है।

मुझे आशा है कि इससे मदद मिलती है!

+0

क्या आप जानते हैं कि यह कैसे आंतरिक सामग्री आकार को प्रभावित करता है करते हैं? मैं स्लाइड पंक्ति/पॉप ओवर के रूप में एक पंक्ति संग्रह दृश्य को लागू करने की कोशिश कर रहा हूं, और इसे एक पंक्ति के लिए अपने न्यूनतम आंतरिक आकार में बाध्य करता हूं। धन्यवाद! –

+1

यदि कोई आश्चर्य करता है कि यह उनके लिए क्यों काम नहीं कर रहा है और आप कक्षा को स्टोरीबोर्ड के अंदर से सेट करते हैं, तो - (आईडी) initWithCoder: (NSCoder *) aDecoder {} इसके बजाय – bitwit

+6

+1 - एक नोट यह है कि आपको इसके लिए उप-वर्ग की आवश्यकता नहीं है (कम से कम मैंने नहीं किया)। मेरे संग्रह दृश्य को आरंभ करने में, मैंने 'flow.minimumInterItemSpacing = CGFloat_Max;' – Logan

12

मैंने पाया कि minimumLineSpacing को सेट करने से मैंने अपना स्क्रॉल एरिया वास्तव में बड़ा बना दिया है और minimumInteritemSpacing=big को collectionview के मध्य में केंद्रित एक स्क्रॉलिंग पंक्ति या कॉलम में आइटम को पूरा करने के लिए सेट किया गया है।

+0

@giorashc किया, ऐसा इसलिए है क्योंकि यह किनारे से बाहर निकलता है, इसलिए इस मामले में एक पंक्ति लंबवत रूप से रखी जाएगी। इसलिए न्यूनतम इंटरइटम स्पेसिंग के लिए एक बड़ा मान सेट करने के लिए स्क्रीन की तुलना में अधिक जगह की आवश्यकता होगी, और यह क्षैतिज रूप से कई लाइनों में टूट जाएगा। –

9

यदि आप टाइप कास्ट पर भरोसा कर सकते हैं तो उपclass का वास्तविक कारण नहीं है।

((UICollectionViewFlowLayout *)self.collectionView.collectionViewLayout).minimumLineSpacing = 1000.0f; 

आप अपने collectionView एक निब से भरी हुई है, तो आप भी गुण और आकार निरीक्षकों में मानकों के साथ चारों ओर निभा सकता है।

स्क्रॉल दिशा के लिए ही चला जाता है।

0

जब आप अपने UICollectionView इनिट पैरामीटर में निम्नलिखित UICollectionViewFlowLayout पास करते हैं।

ध्यान दें: आप 0 पिक्सल सेल रिक्ति के लिए UICollectionViewFlowLayout

var collectionViewFlowControl = UICollectionViewFlowLayout() 
collectionViewFlowControl.scrollDirection = UICollectionViewScrollDirection.Horizontal 

का एक उपवर्ग बनाने की जरूरत नहीं है:

collectionViewFlowControl.minimumInteritemSpacing = 0; 
collectionViewFlowControl.minimumLineSpacing = 0; 

collectionView = UICollectionView(frame: CGRectMake(0, 0, self.view.frame.size.width, 120), collectionViewLayout: collectionViewFlowControl) 
0
UICollectionViewFlowLayout *layout=[[UICollectionViewFlowLayout alloc] init]; 
[layout setScrollDirection:UICollectionViewScrollDirectionHorizontal]; 

layout.minimumInteritemSpacing = 0; 
layout.minimumLineSpacing = 0; 


blendEffectCollectionView=[[UICollectionView alloc] initWithFrame:CGRectMake(0, 95, 320, 60) collectionViewLayout:layout]; 
[blendEffectCollectionView setDataSource:self]; 
[blendEffectCollectionView setDelegate:self]; 
[blendEffectCollectionView registerClass:[BlendModeCell class] forCellWithReuseIdentifier:@"cellIdentifier"]; 
[blendEffectCollectionView setBackgroundColor:[UIColor clearColor]]; 

[bottomActivityView addSubview:blendEffectCollectionView];