0

Итак, я работаю над приложением, которое является частью структуры ePub. Приложение вставляет читателя в свое представление и позволяет пользователю прокручивать зум и страницу путем прокрутки. Я пытаюсь изменить его так, чтобы список ePubs попадал в коллекцию в виде ячеек, отображающих обложку epubs. Я могу создать ячейки для flowlayout и использовать рамки рамки я могу создавать ячейки, но когда я пытаюсь и поворачивать от портретного до пейзажа, они не корректируют размер и положение. Мой код для клеток заключается в следующем:Настройка ячеек UICollectionViewFlowLayout при вращении

//Set Collection View Cell Size and Orientation 
-(CGSize) 
    collectionView:(UICollectionView *) collectionView 
    layout:(UICollectionViewLayout*)collectionViewLayout 
    sizeForItemAtIndexPath:(NSIndexPath *)indexPath{ 

//Set Landscape size of cells 
if(UIDeviceOrientationIsLandscape([UIDevice currentDevice].orientation)){ 
    CGFloat cellWidth = [[UIScreen mainScreen] bounds].size.width; 
    CGFloat cellHeigt = [[UIScreen mainScreen] bounds].size.height-350; 
    NSLog(@"Is Landscape"); 
    return CGSizeMake(cellWidth, cellHeigt); 
} 
//Set Potrait size of cells 
else{ 
    NSLog(@"Is Portrait"); 
    CGFloat cellWidth = [[UIScreen mainScreen] bounds].size.width-80; 
    CGFloat cellHeigt = [[UIScreen mainScreen] bounds].size.height-240; 
    return CGSizeMake(cellWidth, cellHeigt); 
} 
} 

и я использую этот код, чтобы установить их:

//Collection View Cell Position 
- (UIEdgeInsets)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout insetForSectionAtIndex:(NSInteger)section { 

if(UIDeviceOrientationIsPortrait([UIDevice currentDevice].orientation)){ 
    return UIEdgeInsetsMake(0,10,0,20); // top, left, bottom, right 
} 
else{ 
    return UIEdgeInsetsMake(0,20,0,20); // top, left, bottom, right 
} 
} 

Когда я повернуть устройство клетку верхней границы проходит над рамой.

Пожалуйста, помогите, как я могу обновить фрейм динамически?

ответ

0

Вам необходимо обновить коллекцию во время вращения. попробуйте ввести следующий код:

- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation 
{ 
    [yourCollectionview performBatchUpdates:nil completion:nil]; 
} 
+0

Thanks. Как я могу ссылаться на свой контроллер просмотра. У меня нет глобальной декларации. Должен ли я изменить свой вопрос и поместить код для всего моего контроллера списка? –

+0

Да положил в ваш viewcontroller, где вы поместили методы сбора данных collectionView. – KKRocks

+0

Спасибо, сейчас я сделаю снимок –

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