2014-07-21 8 views
10

मेरे पास एक संग्रहदृश्य है जिसमें UICollectionViewFlowLayout है जिसमें मैंने 10 आइटम रखे हैं।UICollectionView लेआउट अंतिम सेल

- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath { 

if (indexPath.row<6) { 
    CGSize retval = CGSizeMake(100, 100); 
    return retval; 
} 

CGSize retval = CGSizeMake(200, 130); 

return retval; 
} 

ऐसा लेआउट: पहले 6 कोशिकाओं अच्छे लग रहे हैं, और 7-9 सही हैं, लेकिन पिछले एक गठबंधन केंद्र नहीं है,

enter image description here enter image description here

और वे विभिन्न आकारों है

कोई भी मुझे यह समझा सकता है?

और नाराज दिन मैं संग्रह लेआउट के साथ खेल रहा हूं, लेकिन अभी भी फ्लोलेआउट और कस्टम लेआउट के चयन पर उलझन में महसूस कर रहा हूं। इस पर कोई सिद्धांत?

अग्रिम में कई thx।

+1

UICollectionView हमेशा पंक्ति में फिट होने के साथ-साथ कई आइटम भरने का प्रयास करता है। आप देख सकते हैं कि आपके उदाहरण में: छवि 1 में, प्रति पंक्ति 3 वस्तुओं के लिए स्थान है, लेकिन छवि 2 में, एक छवि के लिए केवल स्थान है। अब अंतिम पंक्ति में समस्या यह है कि UICollectionView नहीं जानता है, चाहे कोई अन्य आइटम वहां होगा या नहीं, इसलिए यह पक्ष में संरेखित होता है और अगले तत्व की प्रतीक्षा करता है। यह ऑटोलायआउट के साथ एक मुद्दा है, विचार स्वचालित रूप से गठबंधन होते हैं और लेआउट प्रतिनिधि के साथ नहीं। (शायद यह किसी को इस समस्या को हल करने में मदद करता है, क्योंकि यह अभी भी खुला है) – choli

उत्तर

4

मैं संग्रह दृश्य में पिछले कुछ कक्षों के साथ एक समान समस्या के साथ एक समान समस्या में आया था। मेरे मामले में यह आइटम आकारों के संबंध में अनुभाग इन्सेट्स को सम्मानित करने का नतीजा था।

0 flowLayout की sectionInset सेट करके देखें: यदि यह आप एक minimumInterItemSpacing लागू करने के लिए के रूप में प्रवाह लेआउट पिछले कुछ कोशिकाओं पर इस मैथुन करने लगता है आवश्यकता हो सकती है काम नहीं करता है

flowLayout.sectionInset = UIEdgeInsetsZero; 

:

flowLayout.minimumInteritemSpacing = 10.f;//or any reasonable number 
संबंधित मुद्दे