在iOS上紧密集合CollectionViewCells?

如果你想将细胞整齐地包装在一起,即使其他细胞中的某些内容更大,那又怎么样呢?

如果你看下面的图片,第一个string是最大的,但是如果我想把其他的单元格整齐地紧紧地捆在一起,不pipe大小如何,这是如何完成的?

无论从侧面还是从上到下,我都想做到这一点。 我希望细胞按照这幅图中箭头指向的方向排列。

更新:文本的第一行是两个单元格打包的togheter。

一个细胞与字符串包装在一起,而其他远离彼此,这是因为第一个字符串是最长的

你必须使用UICollectionViewFlowLayout来实现这一点

注意:以下信息来自Raywenderlich博客

您可以inheritanceUICollectionViewLayout以创build自己的自定义布局,但Apple已经为开发人员提供了一个名为UICollectionViewLayout的基本“基于stream”的布局。 它根据它们的大小一个接一个地排列元素,就像一个网格视图。 你可以直接使用这个布局类,或者子类来获得一些有趣的行为和视觉效果。

您可以在Raywenderlich博客中看到一个很好的例子

示例代码:

 - (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath { NSString *searchTerm = self.searches[indexPath.section]; FlickrPhoto *photo = self.searchResults[searchTerm][indexPath.row]; CGSize retval = photo.thumbnail.size.width > 0 ? photo.thumbnail.size : CGSizeMake(100, 100); retval.height += 35; retval.width += 35; return retval; } - (UIEdgeInsets)collectionView: (UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout insetForSectionAtIndex:(NSInteger)section { return UIEdgeInsetsMake(50, 20, 50, 20); } 

有更多的委托方法可以实现比这个。 例子如下

 collectionView:layout:sizeForItemAtIndexPath collectionView:layout:insetForSectionAtIndex: