Xcode 7:以编程方式生成的Autolayout到UICollectionViewCell

时间:2016-08-08 11:44:38

标签: ios xcode storyboard uicollectionviewcell nslayoutconstraint

我有一个 CollectionView,它在运行时生成九个collectionview单元(以编程方式设置)。

故事板中只有一个CollectionView单元格。

我质疑如何设置约束到Cell,使其显示为屏幕截图。

Screenshot

2 个答案:

答案 0 :(得分:1)

因为您的布局显示每行将有3个单元格。你需要将你的集合视图宽度除以3加空间用于分隔符。一个好的方法是附加集合视图左上角的自动布局。并使用以标签为中心的虚拟单元格。您需要以编程方式在此委托上工作。

 - (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath
{
    CGFloat screenWidth = collectionViewFrame.size.width;
    float cellWidth = screenWidth / 3.0 - 20; //Replace the divisor with the column count requirement. Make sure to have it in float.
    CGSize size = CGSizeMake(cellWidth, cellWidth);

    return size;
}

答案 1 :(得分:0)

对于集合视图,您可以设置故事板中行和单元格之间的距离。 最初需要为行和单元格设置最小间距。

enter image description here

然后你需要根据设备的宽度设置单元格的动态宽度, 并确保从该宽度中扣除2 *个最小间距。如果有任何左侧或右侧,还扣除部分插入。

func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize {
return CGSizeMake((Device_Width/3.0)-2*(Minimum cell spacing+section_insets.left), 120.0)

//for iphone 4 in my case

//返回CGSizeMake((320 / 3.0) - (2 * 1)-2(10),100.0)      }

设备宽度是设备的宽度。 您在故事板中设置的最小单元格间距 section_inset.left,也是每个故事板值。