5

Mam UICollectionViewController, który ładuję, gdy użytkownik obraca iPada, aby ustawić go w orientacji poziomej. Problem polega na tym, że moje UICollectionViewCell s wciąż ładują się tak, jakby były w orientacji pionowej. Ustawiłem UICollectionViewController na pejzaż wewnątrz Konstruktora interfejsów i używam niestandardowej klasy komórki, którą nazwałem CollectionViewCell. Każda komórka zawiera tylko obraz i etykietę.iOS: Jak zmienić orientację UICollectionViewCell?

Czy jest coś, co powinienem robić w Konstruktorze interfejsów lub w moim kodzie? Próbowałem użyć CGAffineTransformationMakeRotation, ale to nie pomogło. Jeśli ktokolwiek inny napotkałby to wcześniej, byłbym niezmiernie wdzięczny! Dziękuję bardzo!

Oto kawałek kodu dla odniesienia:

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

} 

Odpowiedz

4

W przypadku ktoś miał ten problem, oto jak ja go rozwiązał.

Początkowo nie zezwalałem na autorotację, a zamiast tego rejestrowałem się tylko dla orientationChanged powiadomień za pomocą NSNotificationCenter. To działało świetnie, ale uniemożliwiło mi to, że mój drugi widok uświadomił sobie, że musi załadować się w trybie poziomym.

Więc zamiast tego, I utworzeniu klasy dla tabBar że mój główny widok jest osadzony w, i wrócę NO dla metody shouldAutoRotate w tej klasie iw każdym innym świetle, z wyjątkiem jednego, który chcę załaduj w trybie poziomym. Nadal używam powiadomień orientationChanged w kontrolerze głównego widoku, ponieważ jest on umieszczony w tabBar. Ale używam autorotacji po powrocie do głównego widoku.

Jeśli ktoś ma jakieś pytania, daj mi znać. Mam nadzieję, że to pomoże!

+0

Używam niestandardowego UICollectionView z dynamicznymi wysokościami w każdej komórce. Ale gdy się obracam, moja komórka nie zmienia szerokości za pomocą metody columnWidthForCollectionView i liczby kolumn metodą maximumNumberOfColumnsForCollectionView. Liczę dynamicznie moją kolumnę. przez - (CGFloat) getCollumnWidth { CGFloat width = (self.view.frame.size.width- (kCollectionCellBorderRight * 3))/2; szerokość powrotu; } To dzieje się zarówno na iPhonie, jak i iPadzie. – Xeieshan