5

У меня есть UICollectionViewController, который я загружаю, когда пользователь превращает свой iPad так, чтобы поместить его в альбомную ориентацию. У меня проблема в том, что мои UICollectionViewCell s по-прежнему загружаются, как если бы они были в портретной ориентации. Я установил UICollectionViewController в ландшафт внутри Interface Builder, и я использую собственный класс ячеек, который я назвал CollectionViewCell. Каждая ячейка содержит только изображение и метку.iOS: Как изменить ориентацию UICollectionViewCell?

Есть ли что-то, что я должен делать либо в Interface Builder, либо в моем коде? Я пробовал использовать 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

В случае, если кто-либо другой имел эту проблему, вот как я ее решил.

Первоначально я не разрешал авторотацию, а вместо этого регистрировал только orientationChanged с помощью NSNotificationCenter. Это отлично поработало, за исключением того, что это мешало моему второму виду понять, что ему нужно загружать в ландшафтном режиме.

Таким образом, вместо этого, я создал класс для tabBar, что мой основной вид вкладывается в, и я вернусь NO для метода shouldAutoRotate в этом классе и в любой другой точки зрения для того, кроме которых я хочу загрузка в ландшафтном режиме. Я все еще использую уведомления orientationChanged в контроллере моего основного вида, поскольку он встроен в tabBar. Но я просто использую авторотацию, возвращаясь к главному виду.

Если у кого есть вопросы, дайте мне знать. Надеюсь, поможет!

+0

Я использую пользовательский UICollectionView с динамическими высотами в каждой ячейке. Но когда я вращаюсь, моя ячейка не меняет ширину с помощью метода columnWidthForCollectionView и количества столбцов с помощью метода maximumNumberOfColumnsForCollectionView. Я динамически вычисляю ширину столбца. через - (CGFloat) getCollumnWidth { CGFloat width = (self.view.frame.size.width- (kCollectionCellBorderRight * 3))/2; обратная ширина; } Это происходит как в iPhone, так и в iPad. – Xeieshan

 Смежные вопросы

  • Нет связанных вопросов^_^