18

फिलहाल मैं UICollectionView बनाने की कोशिश कर रहा हूं, जो rows और columns के साथ एक साधारण excel-like-spreadsheet प्रदर्शित करना चाहिए। मुझे विश्वास है कि UICollectionViews के साथ यह एक आसान काम होना चाहिए। और मैं वास्तव में UICollectionView में कार्यान्वयन करना चाहता हूं, grid framework में नहीं।UICollectionView: एक UICollectionViewLayout को परिभाषित करने के लिए जो क्षैतिज और लंबवत स्क्रॉलिंग का समर्थन करता है?

लेकिन फिलहाल मैं थोड़ी देर लटक रहा हूं। मैंने जो पाया है, वह है कि दुर्भाग्यवश UICollectionViewDelegateFlowLayout का उपयोग नहीं कर सकता है, क्योंकि यह या तोhorizontally या vertically दिशा का समर्थन करता है। लेकिन मुझे दोनों दिशाओं में scrolling की आवश्यकता है।

इसलिए मुझे UICollectionViewLayout का उपयोग करना है, लेकिन इसके लिए मुझे अच्छे उदाहरण नहीं मिलते हैं, इसका उपयोग कैसे करें। क्या आपके पास कोई उदाहरण है, rows और columns का समर्थन करने के लिए UICollectionViewLayout को उप-वर्ग कैसे करें?

अग्रिम धन्यवाद।

उत्तर

10

कस्टम लेआउट को कार्यान्वित करने के दो अच्छे उदाहरण यहां दिए गए हैं।

https://github.com/mpospese/IntroducingCollectionViews

http://skeuo.com/uicollectionview-custom-layout-tutorial

+0

धन्यवाद, उन उदाहरणों ने मुझे बहुत मदद की। अगर किसी के पास क्षैतिज और लंबवत स्क्रॉलिंग तालिका का पूर्ण उदाहरण है (UICollectionView में कार्यान्वित) कृपया इसे यहां पोस्ट करने के लिए स्वतंत्र महसूस करें। – AxM

+6

मैंने क्षैतिज और लंबवत स्क्रॉलिंग का समर्थन करने के साथ UICollectionView का उपयोग करके मूल ग्रिड व्यू किया है। इससे आपको https://www.dropbox.com/s/qmmzuw35nvz8v36/MyCollectionView.zip – Jirune

+1

इस @ jirune के लिए बहुत बहुत मदद मिल सकती है। यह मेरे लिए काम करता है, लेकिन यह काफी धीमा है। क्या आप जानते हैं कि मैं इसे तेज करने के बारे में कैसे जा सकता हूं? मैं सोच रहा हूं कि रेक्ट चौराहे कोड वह हिस्सा है जिसे मुझे अनुकूलित करने की आवश्यकता है। –

7

UICollectionViewFlowLayout निश्चित रूप से नहीं कर सकता - "ग्रिड लेआउट केवल एक अक्ष के साथ स्क्रॉल करता है, या तो क्षैतिज या लंबवत।"

यह UICollectionViewLayout का उप-वर्ग है। ऐसा लगता है कि आप UICollectionViewLayout का अपना उप-वर्ग बना सकते हैं और दोनों दिशाओं में स्क्रॉल कर सकते हैं।

पृष्ठ से आपका क्या मतलब है, आप scrollview जैसे पेजिंग करना चाहते हैं? मैं क्षैतिज स्क्रॉलिंग के लिए UIScrollView के अंदर, ऊर्ध्वाधर स्क्रॉलिंग के लिए UICollectionView में UICollectionViewFlowLayout का उपयोग करने के बारे में सोच रहा हूं।

+2

हाँ पूरी तरह से said..thanks .. –

+0

हाँ, मैं पहले से ही पता है, मैं UICollectionViewLayout बजाय UICollectionViewFlowLayout का उपयोग करना होगा ... इस मैं पहले से ही प्रारंभिक प्रश्न में पोस्ट किया है। तो आपकी टिप्पणी पूरी तरह से सवाल का जवाब नहीं दे रही है, क्षमा करें। – AxM

4

मैं एक साधारण क्षैतिज & ऊर्ध्वाधर स्क्रॉल ग्रिड यहां लागू करने के लिए एक कस्टम लेआउट का उपयोग करने का एक उदाहरण जोड़ दिया है https://github.com/neildavis/MyCollectionView

मेरे उदाहरण PSTCollectionView का उपयोग करता है के बाद से मैं आईओएस 5 समर्थन की जरूरत , लेकिन यह यूआईसीओलेक्शन व्यू में निर्मित एपीआई संगत है। (असल में यह आईओएस 6 पर यूआईसीओलेक्शन व्यू का उपयोग करने के लिए संगतता कक्षाओं (PSUICollectionView इत्यादि) का उपयोग करता है और आईओएस 5 पर पीएसटीकोलेक्शन व्यू इत्यादि का उपयोग करने के लिए वापस आ जाता है।) आईओएस 6 पर वापस जाने के लिए बस 'पीएस' उपसर्ग को हटाएं केवल यूआईकिट कार्यान्वयन ।

3

उत्तर 3 नमूना परियोजनाओं

चीर-फाड़ अपने UICollectionViewLayout उपवर्ग में की आवश्यकता नहीं है कि:

  1. -(CGSize)[collectionViewContentSize] लागू है और एक आकार बड़ा लौट ऊंचाई UICollectionView के आकार की तुलना में चौड़ाई में। (self.collectionView.frame.size के माध्यम से सुलभ)
  2. फ्रेम आकार के बजाय सामग्री आकार के भीतर अपने UICollectionViewCell एस के लिए लेआउट की गणना करें।

नोट: सुनिश्चित करें कि UICollectionView में स्क्रॉलिंग सक्षम है। (यह डिफ़ॉल्ट रूप से चालू है।)

2

मुझे कुछ इसी तरह की आवश्यकता थी। मैंने कस्टम कलेक्शन व्यूलाउट बनाया है।

https://github.com/akashraje/BidirectionalCollectionViewLayout

+0

यह मेरे लिए शानदार ढंग से काम करता था, हालांकि घटक की वर्तनी से सावधान रहना पड़ता था क्योंकि इसे स्वचालित रूप से एक्सकोड द्वारा नहीं उठाया जाता था, और एक छोटे टाइपो ने मुझे उम्र के लिए सर्कल में चारों ओर घूमना पड़ा था। – user1702985

+0

बढ़िया! इस स्रोत के साथ आप वस्तुओं की एक पंक्ति के लिए चयन भी लागू कर सकते हैं। –