2013-08-16 3 views
17

के बाद सही है मेरे पास पेजिंग और सभी के साथ एक सामान्य UICollectionView है। और viewDidAppear:, केवल पहली बार देखने फोन पर, मैं गलत आकार जब myCollectionView.collectionView.contentSize.width बुला पानेUICollection गलत सामग्री देखें पहले लोड पर आकार,

फिर भी क्यों viewDidLoad :, viewWillAppear पर यह पता लगाने की कोशिश कर रहा। यह हमेशा 0 चौड़ाई के साथ प्रतिक्रिया करता है (ऊंचाई हमेशा सही है)। दृश्य के लगातार पुनः लोड मुझे सही एक मिलता है।

self.collectionView.collectionViewLayout.collectionViewContentSize 

जो मुझे पहले लोड पर सही चौड़ाई घटना देने का उपयोग कर का सहारा लिया।

अभी भी मेरे लिए एक रहस्य है।

+0

मुझे यकीन है कि यह ऑटोलायआउट के साथ कुछ करने के लिए है .. इसे अक्षम करने का प्रयास करें – abbood

+0

पहले से ही अक्षम, पहली बात मैंने सोचा था। ऐसा लगता है कि यह दृश्य को तेज़ी से लोड नहीं कर रहा है, क्योंकि पुन: प्रकट होने पर चौड़ाई सही है (पूर्व के लिए। उसी दृश्य पर वापस आने पर)। – klauslanza

+0

क्या आपको कभी इस समस्या का जवाब मिला? –

उत्तर

32

तो मैं एक समान समस्या देख रहा था जहां सामग्री आकार चौड़ाई हमेशा शून्य थी। सरल जवाब यह है कि संग्रह में अभी तक कोई सामग्री नहीं है। यही कारण है कि यह सामग्री का आकार शून्य है।

मैं यह भी देख रहा था कि कभी-कभी मेरे UICollectionView पर invalidateLayout पर कॉल करने के बाद, मैं देख रहा था कि self.collectionView.collectionViewLayout.collectionViewContentSizeself.collectionView.contentSize जैसा नहीं था।

बहुत खोज के बाद मैं एक महान संकेत here in this SO post

क्या मैं एक ही होने के लिए दोनों contentSize गणना पाने के लिए क्या करने की जरूरत पाया तुरंत [self.collectionView reloadData] या [self.collectionView.collectionViewLayout invalidateLayout] बुला के बाद [self.collectionView layoutIfNeeded] कॉल करने के लिए किया गया था।

यह अनिवार्य रूप से अगले रनलोप चक्र के बजाय तुरंत लोड होने के लिए मजबूर करता है।

मुझे उम्मीद है कि यह आपकी समस्या हल करेगी।

+0

आपने अपना जीवन बचाया। : डी बहुत बहुत धन्यवाद। @ucangetit – iPeter

संबंधित मुद्दे