UICollectionViewCell具有灵活的宽度

时间:2014-02-28 12:45:00

标签: ios uicollectionview

我有一个基本的集合视图,每个部分都有垂直滚动,部分和可变数量的单元格。当需要启动下一行单元格时,我需要调整每个单元格的宽度以填充最多4个单元格的可用宽度。

如果某个部分有1,2,3或4个单元格,则它们的宽度应分别为视图宽度的1 / 1,1 / 2,3 / 3或1/4。具有超过4个单元格的部分应该在一行中拉伸4个单元格并继续在另一行上。

我是否需要为此子类化UICollectionViewFlowLayout,或者我可以在UICollectionViewController类中处理它以及如何处理它?<​​/ p>

enter image description here

2 个答案:

答案 0 :(得分:3)

您应该使用以下两种方法来更改一行中的列

 - (UIEdgeInsets)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout insetForSectionAtIndex:(NSInteger)section
{
    return UIEdgeInsetsMake(5,5,0,5);
}

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

    return CGSizeMake(75, 75);
}

答案 1 :(得分:0)

您必须使用UICollection视图委托方法为CollectionCell提供自定义设计

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

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


- (UIEdgeInsets)collectionView:
(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout insetForSectionAtIndex:(NSInteger)section {

    return UIEdgeInsetsMake(0,5,0,5);
}
您可以在“框架文件”检查器中设置

和大小 enter image description here