iOS UICollectionvView单元格横向和纵向的不同布局

时间:2015-05-09 16:59:35

标签: ios uicollectionview uicollectionviewcell

我想要制作屏幕,其中集合视图Cell应该在设备处于纵向时填充整个屏幕宽度, 当设备旋转时,集合视图在1个部分中显示2个单元格。

为了更好的可视化,请参见下图。

enter image description here

enter image description here

我尝试将单元格宽度=设备宽度(用于纵向),但在屏幕中心的横向单元格显示中。

是否可以使用集合视图进行此类设计? 如果有可能那么我该如何实现呢?或任何其他想法将不胜感激。

2 个答案:

答案 0 :(得分:1)

使用尺寸等级以不同方式定位横向或纵向。

查看此详细文章go to Add constraints for generic size class

答案 1 :(得分:0)

你可以试试这个

#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];
}