UICollectionView 单元格布局不正确

Posted

技术标签:

【中文标题】UICollectionView 单元格布局不正确【英文标题】:UICollectionView cell layout not correct 【发布时间】:2014-05-27 08:25:10 【问题描述】:

我对@9​​87654322@ 很陌生。我正在制作universal app。我想要的是在 iPad 上每行有 2 个单元格。但在 iPhone 上,每一行只有一个单元格。我能够正确设置 iPad 版本。但我无法理解 iPhone 的设置。

这是目前的设置。你可以在我的storyboard 上看到它看起来还不错。但是当我运行它时,我看到每行仍然有两个单元格。

有人可以帮我解决这个问题吗?

亲切的问候

【问题讨论】:

【参考方案1】:
    - (void)viewDidLoad
    
        [super viewDidLoad];

        [self.collectionView registerClass:[CVCell class] forCellWithReuseIdentifier:@"cvCell"];

        // Configure layout
        UICollectionViewFlowLayout *flowLayout = [[UICollectionViewFlowLayout alloc] init];
        [flowLayout setItemSize:CGSizeMake(100, 100)];
        [flowLayout setScrollDirection:UICollectionViewScrollDirectionHorizontal];
        [self.collectionView setCollectionViewLayout:flowLayout];


    
    -(void)viewWillAppear:(BOOL)animated 

        [super viewWillAppear:animated];
        deviceModel = (NSString*)[UIDevice currentDevice].model;
        NSLog(@"device is = %@",deviceModel);
    
    -(NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView 
        if ([deviceModel isEqualToString:@"iPhone Simulator"]) 
            return 1;
        else
        
            return 2;
        
    
    -(NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section 
          return 3;

    
    -(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath 

        // Setup cell identifier
        static NSString *cellIdentifier = @"cvCell";

        /* Uncomment this block to use subclass-based cells */
        CVCell *cell = (CVCell *)[collectionView dequeueReusableCellWithReuseIdentifier:cellIdentifier forIndexPath:indexPath];


        if (indexPath.section == 0) 
            cell.backgroundColor = [UIColor redColor];
        
        if (indexPath.section == 1) 
            cell.backgroundColor = [UIColor blueColor];
        
        cell.titleLabel.text = [NSString stringWithFormat:@"item %ld",(long)indexPath.section];
        // Return the cell
        return cell;

    

检查此代码,它将在 iPhone 单元中为您提供一项,在 iPad 中为您提供两项..

【讨论】:

这是正确的方法吗?你是说每个部分应该只包含 1 个单元格?但这不是 UICollectionviews 的工作方式? 无论您想要在单行中添加多少个下载组件,都将其添加为部分,然后它将按要求工作。

以上是关于UICollectionView 单元格布局不正确的主要内容,如果未能解决你的问题,请参考以下文章

Swift 无法让 UICollectionView 正确布局

UICollectionView 布局间距问题。单元格之间的空间太大

单元格 UICollectionView 之间的间距不正确

UICollectionView 收到具有不存在索引路径的单元格的布局属性

UICollectionView 接收到具有不存在索引路径的单元格的布局属性

UICollectionView中删除一个单元格后刷新单元格布局