场景
UICollectionView
是继UITableView
后的高级视图,可用来搭建复杂的UI.很多复杂的UI用UITableView
来布局就很麻烦,比如流式布局的界面,而且还涉及到Cell的复用,但是用UICollectionView
就很简单.只是我觉得UICollectionView
较之前者也会有一些小的不便,比如UITableView
可以用第三方框架,如:UITableView-FDTemplateLayoutCell很方便的就能够动态计算行高,但UICollectionView
则较麻烦,一般只能用代理方法- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewFlowLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath
设置Cell的大小.
在我的一个需求中,用UICollectionView
布局就比较方便,但是涉及到需要在一个UICollectionView
中一些UICollectionViewCell
纵向排列,一些横向排列.
一般用UICollectionViewFlowLayout
可以设置排列方式,但是如果仅在一个UICollectionView
中要显示差异化的滚动方向,就不能很好的实现了.
解决方案
最终,我选择了在一个UICollectionViewCell
中嵌套UICollectionView
的方式可以实现上述的需求,但是好在我的UI中仅有一个UICollectionViewCell
的item
滚动方式会与其他的不同.如果cell较多,那么也可能还需要处理复用带来的性能影响问题。
PS:关于这个问题,我也想了很长时间如何更有效的处理,但是由于是在一个
UICollectionView
视图中布局,所以暂没有找到解决方案,用上述的方式暂解决了问题。