5

Ich habe eine UICollectionViewController, die ich laden, wenn ein Benutzer ihr iPad dreht, um es in Querformat zu setzen. Das Problem, das ich habe, ist, dass meine UICollectionViewCell s immer noch laden, als ob es im Hochformat wäre. Ich setze die UICollectionViewController auf Landschaft innerhalb von Interface Builder, und ich verwende eine benutzerdefinierte Zellklasse, die ich CollectionViewCell genannt habe. Jede Zelle enthält nur ein Bild und eine Beschriftung.iOS: Wie kann ich die Ausrichtung einer UICollectionViewCell ändern?

Gibt es etwas, was ich entweder in Interface Builder oder in meinem Code tun sollte? Ich habe versucht mit CGAffineTransformationMakeRotation, aber das war keine Hilfe. Wenn jemand anderes dies schon einmal erlebt hat, wäre ich sehr dankbar! Vielen Dank!

Hier ist ein Bit des Codes als Referenz:

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

} 

Antwort

4

Falls jemand dieses Problem gehabt hat, hier ist, wie ich es gelöst.

Ich war ursprünglich Autorotation nicht erlaubt, und stattdessen wurde nur für orientationChanged Benachrichtigungen unter Verwendung NSNotificationCenter registriert. Das funktionierte großartig, außer dass es meine zweite Ansicht davon abhielt zu erkennen, dass es im Querformat geladen werden musste.

Anstatt also, dass, ich habe eine Klasse für das tabBar geschaffen, die meine Hauptansicht in eingebettet ist und ich wieder NO für die shouldAutoRotate Methode in dieser Klasse und in jeder anderen Ansicht mit Ausnahme des einen, die ich will Laden im Querformat. Ich verwende immer noch die orientationChanged Benachrichtigungen in meiner Hauptansicht 'Controller, da es in die tabBar eingebettet ist. Aber ich benutze nur Autorotation, wenn ich zur Hauptansicht zurückkehre.

Wenn jemand irgendwelche Fragen hat, lass es mich wissen. Ich hoffe es hilft!

+0

Ich verwende eine benutzerdefinierte UICollectionView mit dynamischen Höhen in jeder Zelle. Aber wenn ich rotiere, ändert meine Zelle die Breite nicht über die Methode columnWidthForCollectionView und die Anzahl der Spalten über die Methode maximumNumberOfColumnsForCollectionView. Ich berechne meine Spaltenbreite dynamisch. via - (CGFloat) getCollumnWidth { CGFloat Breite = (self.view.frame.size.width- (kCollectionCellBorderRight * 3))/2; Rücksprungbreite; } Dies geschieht sowohl in iPhone und iPad. – Xeieshan

Verwandte Themen