我有一个 CollectionView,它在运行时生成九个collectionview单元(以编程方式设置)。
故事板中只有一个CollectionView单元格。
我质疑如何设置约束到Cell,使其显示为屏幕截图。
答案 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)
对于集合视图,您可以设置故事板中行和单元格之间的距离。 最初需要为行和单元格设置最小间距。
然后你需要根据设备的宽度设置单元格的动态宽度, 并确保从该宽度中扣除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,也是每个故事板值。