2012-10-09 11 views
5

Ho un UICollectionViewController che carico quando un utente gira il proprio iPad in modo da inserirlo nell'orientamento orizzontale. Il problema che sto avendo è che i miei UICollectionViewCell si stanno ancora caricando come se fosse in verticale. Ho impostato lo UICollectionViewController in orizzontale all'interno di Interface Builder e sto utilizzando una classe di celle personalizzata che ho chiamato CollectionViewCell. Ogni cella contiene solo un'immagine e un'etichetta.iOS: come posso modificare l'orientamento di un UICollectionViewCell?

C'è qualcosa che dovrei fare sia in Interface Builder o nel mio codice? Ho provato a utilizzare CGAffineTransformationMakeRotation, ma non è stato di aiuto. Se qualcun altro l'avesse già incontrato, sarei estremamente grato! Grazie mille!

Ecco un po 'di codice di riferimento:

-(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); 

} 

risposta

4

Nel caso in cui qualcun altro ha avuto questo problema, ecco come ho risolto.

Inizialmente non concedevo l'autorotazione e invece mi ero appena registrato per le notifiche orientationChanged utilizzando NSNotificationCenter. Questo ha funzionato alla grande, tranne che impediva alla mia seconda visione di rendersi conto che era necessario caricare in modalità orizzontale.

Così, invece di che, ho creato una classe per la tabBar che la mia vista principale è incorporato in, e torno NO per il metodo shouldAutoRotate in quella classe e in ogni altra vista, tranne per quello che voglio caricare in modalità orizzontale. Sto ancora utilizzando le notifiche orientationChanged nel controller della mia vista principale, poiché è incorporato nel tabBar. Ma sto solo usando la funzione di autorotazione quando ritorna alla vista principale.

Se qualcuno ha delle domande, fammelo sapere. Spero che sia d'aiuto!

+0

Sto utilizzando un UICollectionView personalizzato con altezze dinamiche in ogni cella. Ma quando ruoto, la mia cella non sta cambiando la larghezza tramite il metodo columnWidthForCollectionView e il numero di colonne tramite il metodo maximumNumberOfColumnsForCollectionView. Sto calcolando la larghezza della mia colonna in modo dinamico. via - (CGFloat) getCollumnWidth { CGFloat width = (self.view.frame.size.width- (kCollectionCellBorderRight * 3))/2; larghezza di ritorno; } Questo sta accadendo sia in iPhone che in iPad. – Xeieshan

Problemi correlati