2012-10-09 52 views
5

Tengo un UICollectionViewController que cargo cuando un usuario enciende su iPad para ponerlo en orientación horizontal. El problema que estoy teniendo es que mis UICollectionViewCell s todavía se están cargando como si estuviera en orientación vertical. Configuré el UICollectionViewController en Landscape Builder, y estoy usando una clase de celda personalizada a la que he llamado CollectionViewCell. Cada celda contiene solo una imagen y una etiqueta.iOS: ¿Cómo puedo cambiar la orientación de un UICollectionViewCell?

¿Hay algo que deba hacer en Interface Builder o en mi código? Intenté usar CGAffineTransformationMakeRotation, pero eso no fue de ayuda. Si alguien más se ha encontrado con esto antes, ¡estaría extremadamente agradecido! ¡Muchas gracias!

Aquí hay un bit del código de referencia:

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

} 

Respuesta

4

En caso de que alguien más ha tenido este problema, aquí es cómo lo resolví.

Al principio no estaba permitiendo autorrotación, y en su lugar solo me registré para notificaciones orientationChanged usando NSNotificationCenter. Esto funcionó muy bien, excepto que impedía que mi segunda vista se diera cuenta de que necesitaba cargar en modo horizontal.

Así que en lugar de eso, he creado una clase para el tabBar que mi vista principal está incrustado en, y vuelvo NO para el método shouldAutoRotate en esa clase y en todas las demás vistas a excepción de la que yo quiero cargar en modo paisaje. Todavía estoy usando las notificaciones orientationChanged en el controlador de mi vista principal, ya que está incrustado en el tabBar. Pero solo estoy usando autorrotación cuando regrese a la vista principal.

Si alguien tiene alguna pregunta, hágamelo saber. ¡Espero eso ayude!

+0

Estoy usando un UICollectionView personalizado con alturas dinámicas en cada celda. Pero cuando giro, mi celda no cambia de ancho a través del método columnWidthForCollectionView y el número de columnas a través del método maximumNumberOfColumnsForCollectionView. Calculo el ancho de mi columna dinámicamente. vía - (CGFloat) getCollumnWidth { CGFloat width = (self.view.frame.size.width- (kCollectionCellBorderRight * 3))/2; ancho de retorno; } Esto está sucediendo tanto en iPhone como en iPad. – Xeieshan

Cuestiones relacionadas