2016-01-06 10 views
6

में अलग सेल आकार मैं UICollectionView उपयोग करना चाहते हैं, तो निम्न बातें लेआउट बनाने के लिए संभव है:2 UICollectionView उद्देश्य सी

something like that...

जैसा कि आप देख सकते हैं, वहाँ सेल के दो अलग अलग आकार रहे हैं। एक पंक्ति का 1/4 है, दूसरा 3/4 है। क्या UICollectionView के साथ इस प्रकार का लेआउट बनाना संभव है?

क्या कोई मुझे सिखा सकता है कि यह कैसे करें ??? या कोई नमूने है ??? मैंने पहले से ही कई ट्यूटोरियल और संदर्भ का अध्ययन किया है। लेकिन अभी भी यह नहीं पता कि यह कैसे करें ..

धन्यवाद!

+0

हाँ यह संभव है। अपने 'UIControllerView' के लिए कस्टम लेआउट बनाने पर एक नज़र डालें, जो वांछित इंटरफ़ेस बनाता है; आप उदास शुरू कर सकते हैं कस्टम लेआउट बनाने के तरीके के बारे में [ऐप्पल आधिकारिक दस्तावेज़ीकरण] (https://developer.apple.com/library/ios/documentation/WindowsViews/Conceptual/CollectionViewPGforIOS/CreatingCustomLayouts/CreatingCustomLayouts.html) पढ़ना। – holex

+0

क्या दो अलग-अलग आकार के कोशिकाएं संबंधित हैं? – Fogmeister

+0

@Fogmeister, क्या आप कस्टम 'UITableViewCell' में सोच रहे हैं? :) – holex

उत्तर

8

वैसे मैंने समय के लिए आइटम चौड़ाई (72.0 और 23.0) हार्डकोड किया है। शेष 5.0 का उपयोग अंतरिम अंतर और किनारे इन्ससेट में किया जाएगा। यह कोड आपको वही देगा जो आप चाहते हैं।

- (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout minimumInteritemSpacingForSectionAtIndex:(NSInteger)section 
{ 
    return 10.0; 
} 

- (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout minimumLineSpacingForSectionAtIndex:(NSInteger)section 
{ 
    return 10.0; 
} 

#pragma mark - CollectionViewFlowLayout Methods 

- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath 
{ 
    CGSize newSize = CGSizeZero; 
    newSize.height = 100; 

    CGRect screenBounds = [[UIScreen mainScreen] bounds]; 
    CGSize screenSize = screenBounds.size; 

    if(indexPath.item % 4 == 0 || indexPath.item % 4 == 3) 
    { 
     //Size : 3/4th of screen 
     newSize.width = screenSize.width * 0.23; 
    } 
    else 
    { 
     //Size : 1/4th of screen 
     newSize.width = screenSize.width * 0.72; 

    } 
    return newSize; 
} 

- (UIEdgeInsets)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout insetForSectionAtIndex:(NSInteger)section 
{ 
    return UIEdgeInsetsMake(10, 2.0, 10, 2.0); 
} 
+0

@Yvonne क्या आप कृपया मेरा जवाब स्वीकार कर सकते हैं? अग्रिम में धन्यवाद :) – nithinbhaktha

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

    return [(NSString*)[arrayOfStats objectAtIndex:indexPath.row] sizeWithAttributes:NULL]; 
} 

इस विधि का उपयोग करके आप सेल के लिए अलग-अलग आकार वापस कर सकते हैं। - (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath विधि को लागू करने से इस लिंक Dynamic cell width of UICollectionView depending on label width

0

इसके लिए विभिन्न तरीके हैं ...

  1. आप क्या कर सकते हैं देखें।

  2. आप चरण-दर-चरण निम्नलिखित चरणों में वर्णित संग्रह दृश्य को पूरी तरह से अनुकूलित कर सकते हैं।

    http://www.raywenderlich.com/107439/uicollectionview-custom-layout-tutorial-pinterest

  3. अपने destianation लेआउट से यह लग रहा है कि देखो आसानी से हो सकता है यहां तक ​​कि UITableViewCell का उपयोग कर के माध्यम से मिलता है (एकल कक्ष में दोनों 1/4 आकार और 3/4 आकार सेल लोड हो रहा है), और के माध्यम से उनमें से आकार बदलने autolayout।

+0

मुझे जवाब देने के लिए धन्यवाद, मैंने कस्टम लेआउट ट्यूटोरियल पढ़ा है। लेकिन मैं समझ नहीं सका। क्या आप कृपया मुझे और बताएं कि यह कैसे करें ?? आपको परेशान करने के लिए माफी चाहता हूं! – Yvonne