2013-04-05 12 views
12

में सभी कोशिकाओं के माध्यम से लूपिंग मेरे पास UICollectionView है और मैं प्रत्येक सेल में एनीमेशन जोड़ना चाहता हूं।UICollectionView

वर्तमान में मैं उपयोग कर रहा हूँ

for(UICollectionView *cell in collectionView.visibleCells){ 
    //add animation to cell here 
} 

लेकिन उस ही दिखाई कोशिकाओं को एनीमेशन लागू होता है और जैसे ही मैं नीचे स्क्रॉल करें और सेल के रूप में अब दिखाई नहीं देते एनिमेशन बंद हो।

UICollectionView में सभी कोशिकाओं के माध्यम से मैं कैसे लूप करूं?

+0

मैं कुछ इसी तरह हासिल करने की कोशिश कर रहा हूं। लेकिन मुझे दृश्यमान कोशिकाओं में शून्य आइटम मिलते हैं। इस सरणी को किस बिंदु पर आबादी मिलती है? –

उत्तर

9

मैं शायद इस बारे में एक अलग तरीके से जाऊंगा। यदि आप कोशिकाओं को एनिमेट करना चाहते हैं, तो आप एक संपत्ति shouldAnimate = YES सेट कर सकते हैं। फिर अपने collectionView:cellForItemAtIndexPath: में उस संपत्ति की जांच करें और यदि आवश्यक हो तो एनीमेशन लागू करें (या इसे हटाएं)।

संपत्ति सेट करने के बाद, केवल दृश्यमान लोड करें: [collectionView reloadItemsAtIndexPaths:collectionView.indexPathsForVisibleItems]

अब, चूंकि एनीमेशन प्रदान किया जाता है जब डेटासॉर-प्रोटोकॉल के माध्यम से किसी सेल से अनुरोध किया जाता है, तो आप स्क्रॉल करते समय एनीमेशन भी प्राप्त करते हैं।

+0

वाह वह शानदार है और एक आकर्षण की तरह काम करता है, बहुत बहुत धन्यवाद :) – user1838169

+0

हाय, एक (मूर्ख) प्रश्न। क्या reloadItemsAtIndexPaths एक ही संग्रह में जाते हैं दृश्य: cellForItemAtIndexPath: बस संपत्ति की जांच करने के बाद? –

+0

नहीं, उदाहरण के लिए बटन बटन के लिए इसे हैंडलर में रखें। इसे 'संग्रह दृश्य में रखते हुए: सेलफॉरआईटमएट इंडेक्सपैथ:' आपके कोड को लूप में रखेगा। सिफारिश नहीं की गई। – fguchelaar