Ячейка iOS UICollectionvView отличается макетом для альбомной и портретной ориентации

Я хочу создать экран, в котором представление коллекции Ячейка должна заполнять всю ширину экрана, пока устройство находится в портретном режиме, а когда устройство вращает представление коллекции, отображаются 2 ячейки в 1 разделе.

Для лучшей визуализации см. изображение ниже.

введите здесь описание изображения

введите здесь описание изображения

Я попытался сделать ширину ячейки = ширине устройства (для портрета), но в альбомной ячейке отображается в центре экрана.

Можно ли сделать такой дизайн, используя представление коллекции? Если это возможно, то как мне этого добиться? ИЛИ любая другая идея будет оценена.


person Apple_Magic    schedule 09.05.2015    source источник
comment
Я думаю, что ваш вопрос очень похож на stackoverflow.com/questions/13556554/   -  person Asaf    schedule 09.05.2015


Ответы (2)



Вы можете попробовать это

#define kNumberOfCellsInARowPortrait 1
#define kNumberOfCellsInARowLandscape 2

- (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout minimumInteritemSpacingForSectionAtIndex:(NSInteger)section
{
   return 0;
}

- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath
{
    if (UIInterfaceOrientationIsLandscape(UIApplication.sharedApplication.statusBarOrientation)) {
        CGFloat cellWidth = floor((CGRectGetWidth(collectionView.bounds)-5) / kNumberOfCellsInARowLandscape);
        return CGSizeMake(cellWidth, cellWidth);
    } else {
        CGFloat cellWidth = floor((CGRectGetWidth(collectionView.bounds)-5) / kNumberOfCellsInARowPortrait);
        return CGSizeMake(cellWidth, cellWidth);
    }
}

- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
{
    [self.collectionView reloadData];
}
person kamil3    schedule 20.02.2016