2012-10-09 13 views
5

मेरे पास UICollectionViewController है जो उपयोगकर्ता लोड करता है जब उपयोगकर्ता अपना आईपैड बदलता है ताकि इसे लैंडस्केप ओरिएंटेशन में रखा जा सके। मेरी समस्या यह है कि मेरा UICollectionViewCell एस अभी भी लोड हो रहा है जैसे कि यह पोर्ट्रेट अभिविन्यास में था। मैंने UICollectionViewController इंटरफ़ेस बिल्डर के अंदर परिदृश्य में सेट किया है, और मैं एक कस्टम सेल क्लास का उपयोग कर रहा हूं जिसे मैंने CollectionViewCell कहा है। प्रत्येक सेल में केवल एक छवि और एक लेबल होता है।आईओएस: मैं UICollectionViewCell के अभिविन्यास को कैसे बदल सकता हूं?

क्या ऐसा कुछ है जो मुझे इंटरफ़ेस बिल्डर में या मेरे कोड में करना चाहिए? मैंने CGAffineTransformationMakeRotation का उपयोग करने की कोशिश की, लेकिन यह कोई मदद नहीं थी। अगर किसी और ने इससे पहले सामना किया है, तो मैं बहुत आभारी रहूंगा! बहुत बहुत धन्यवाद!

यहाँ संदर्भ के लिए कोड का एक सा है:

-(void)viewDidLoad 
{ 
self.collectionView.dataSource = self; 
    self.collectionView.delegate = self; 
} 

- (NSInteger)collectionView:(UICollectionView *)view numberOfItemsInSection:(NSInteger)section 
{ 
    return listArray.count; 
} 

- (NSInteger)numberOfSectionsInCollectionView: (UICollectionView *)collectionView 
{ 
    return 1; 
} 

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath 
{  
    CollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"devices" forIndexPath:indexPath]; 
    cell.statusImage.image=[UIImage imageNamed:@"Default.png"]; 
    [email protected]"HEY !!!!!"; 
    return cell; 
} 


- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath { 
    return CGSizeMake(320, 420); 
} 

- (UIEdgeInsets)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout insetForSectionAtIndex:(NSInteger)section 
{ 
    return UIEdgeInsetsMake(50, 20, 50, 20); 

} 

उत्तर

4

मामले में किसी और को इस समस्या को पड़ा है, यहाँ मैं इसे कैसे हल किया है।

मैं शुरुआत में ऑटोरोटेशन की इजाजत नहीं दे रहा था, और इसके बजाय NSNotificationCenter का उपयोग कर orientationChanged सूचनाओं के लिए पंजीकरण कर रहा था। यह महान काम करता है सिवाय इसके कि यह मेरे दूसरे दृश्य को महसूस करने से रोक रहा था कि इसे लैंडस्केप मोड में लोड करने की आवश्यकता है।

ताकि के बजाय, मैं tabBar कि मेरी मुख्य दृश्य में अंतर्निहित है के लिए एक वर्ग बना लिया है, और मुझे लगता है कि कक्षा में और एक को छोड़कर हर दूसरे दृश्य में shouldAutoRotate विधि के लिए NO लौट जो मैं करना चाहता हूँ लैंडस्केप मोड में लोड करें। मैं अभी भी अपने मुख्य दृश्य नियंत्रक में orientationChanged अधिसूचनाओं का उपयोग कर रहा हूं, क्योंकि यह tabBar में एम्बेड किया गया है। लेकिन मुख्य दृश्य पर लौटने पर मैं सिर्फ ऑटोरोटेशन का उपयोग कर रहा हूं।

यदि किसी के पास कोई प्रश्न है, तो मुझे बताएं। आशा करता हूँ की ये काम करेगा!

+0

मैं प्रत्येक सेल में गतिशील ऊंचाइयों के साथ एक कस्टम UICollectionView का उपयोग कर रहा हूं। लेकिन जब मैं घुमाता हूं, तो मेरा सेल कॉलम के माध्यम से चौड़ाई नहीं बदल रहा है WidthForCollectionView विधि और अधिकतम NumberOfColumnsForCollectionView विधि के माध्यम से कॉलम की संख्या। मैं गतिशील रूप से मेरी कॉलम चौड़ाई की गणना कर रहा हूँ। के माध्यम से - (CGFloat) getCollumnWidth { CGFloat चौड़ाई = (self.view.frame.size.width- (kCollectionCellBorderRight * 3))/2; वापसी चौड़ाई; } यह आईफोन और आईपैड दोनों में हो रहा है। – Xeieshan

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

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