Ios UICollectionView目标C中的2个不同单元格大小

Ios UICollectionView目标C中的2个不同单元格大小,ios,objective-c,collectionview,Ios,Objective C,Collectionview,我想使用UICollectionView,可以创建以下布局: 如您所见,有两种不同大小的单元格。一个是行的1/4,另一个是3/4。是否可以使用UICollectionView创建此类布局 有人能教我怎么做吗???或者有样品吗???我已经学习了很多教程和参考资料。但是我还是不知道怎么做 谢谢 - (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionV

我想使用UICollectionView,可以创建以下布局:

如您所见,有两种不同大小的单元格。一个是行的1/4,另一个是3/4。是否可以使用UICollectionView创建此类布局

有人能教我怎么做吗???或者有样品吗???我已经学习了很多教程和参考资料。但是我还是不知道怎么做

谢谢

- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath{

    return [(NSString*)[arrayOfStats objectAtIndex:indexPath.row] sizeWithAttributes:NULL];
}

使用此方法可以为单元格返回不同的大小。请参考此链接有不同的方法:

  • 您可以通过实现
    -(CGSize)collectionView:(UICollectionView*)collectionView布局:(UICollectionViewLayout*)collectionViewLayout SizeFormiteIndeXPath:(NSIndexPath*)indexPath
    方法来实现

  • 您可以完全自定义集合视图,如以下教程中所述

  • 从您的目标布局来看,通过使用偶数
    UITableviewCell
    (在单个单元格中加载1/4大小和3/4大小的单元格),并通过自动布局更改它们的大小,可以轻松获得外观


  • 目前我已经硬编码了项目宽度(72.0和23.0)。5.0的其余部分将用于临时间距和边缘设置。这段代码会给你想要的东西

    - (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout minimumInteritemSpacingForSectionAtIndex:(NSInteger)section
    {
        return 10.0;
    }
    
    - (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout minimumLineSpacingForSectionAtIndex:(NSInteger)section
    {
        return 10.0;
    }
    
    #pragma mark - CollectionViewFlowLayout Methods
    
    - (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath
    {
        CGSize newSize = CGSizeZero;
        newSize.height = 100;
    
        CGRect screenBounds = [[UIScreen mainScreen] bounds];
        CGSize screenSize = screenBounds.size;
    
        if(indexPath.item % 4 == 0 || indexPath.item % 4 == 3)
        {
            // Size : 1/4th of screen
            newSize.width = screenSize.width * 0.23;
        }
        else
        {
            // Size : 3/4th of screen
            newSize.width = screenSize.width * 0.72;
    
        }
        return newSize;
    }
    
    - (UIEdgeInsets)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout insetForSectionAtIndex:(NSInteger)section
    {
        return UIEdgeInsetsMake(10, 2.0, 10, 2.0);
    }
    

    感谢您的回复,我已经阅读了自定义布局教程。但是我不明白。你能告诉我更多怎么做吗??对不起打扰你了!是的,这是可能的。查看为您的
    UIControllerView
    创建自定义布局,这将构建所需的界面;例如,您可以开始阅读有关如何创建自定义布局的内容。这两个不同大小的单元格是否相关?@Fogmeister,您是否在自定义
    UITableViewCell
    ?:)@是的。即使不相关,也可能更容易(对于刚接触集合视图的人来说)坚持使用表视图并在单元格内创建布局:D