美文网首页
iOS - UICollectionView cell间距调整

iOS - UICollectionView cell间距调整

作者: Fly丶心晨 | 来源:发表于2020-07-10 09:57 被阅读0次

记录UICollectionView cell间距调整方法

啥东西不经常用就会忘记,以后要做好笔记.  (⊙o⊙)

实例化了一个CollectionView

UICollectionViewFlowLayout*layout=[[UICollectionViewFlowLayout alloc]init];layout.minimumLineSpacing=kLineSpacing;layout.minimumInteritemSpacing=kItemSpacing;layout.scrollDirection=UICollectionViewScrollDirectionVertical;_cusCollectionView=[[UICollectionView alloc]initWithFrame:CGRectMake(0,0,SCREEN_WIDTH,SCREEN_HEIGHT)collectionViewLayout:layout];_cusCollectionView.backgroundColor=[UIColor whiteColor];_cusCollectionView.delegate=self;_cusCollectionView.dataSource=self;[_cusCollectionView registerClass:[DC_CustomizeViewclass]forCellWithReuseIdentifier:CustomizeCelliIdentify];

定义的一些值

staticNSString*CustomizeCelliIdentify=@"CustomizeCelliIdentify";staticconstCGFloat kLineSpacing=5.f;//列间距 |staticconstCGFloat kItemSpacing=8.f;//item之间的间距  --staticconstCGFloat kCellMargins=5.f;//左右缩进staticconstNSInteger kRowNumber=4;//列数staticconstCGFloat kCellHeight=80.f;//Cell高度

常用的协议方法

//MARK: - UICollectionDatasoure//显示几个section-(NSInteger)numberOfSectionsInCollectionView:(UICollectionView*)collectionView{return1;}//每个section中显示多个item-(NSInteger)collectionView:(UICollectionView*)collectionView numberOfItemsInSection:(NSInteger)section{return12;}//配置单元格的方法-(UICollectionViewCell*)collectionView:(UICollectionView*)collectionView cellForItemAtIndexPath:(NSIndexPath*)indexPath{DC_CustomizeView*cell=[collectionView dequeueReusableCellWithReuseIdentifier:CustomizeCelliIdentify forIndexPath:indexPath];cell.title=[NSString stringWithFormat:@"%td - %td",indexPath.section,indexPath.item];cell.editing=YES;returncell;}//MARK: - UICollectionDelegate//每个单元格的大小size-(CGSize)collectionView:(UICollectionView*)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath*)indexPath{returnCGSizeMake((SCREEN_WIDTH-kItemSpacing*(kRowNumber-1))/kRowNumber,kCellHeight);}

以上代码写出的效果如下:

我是效果~~~

以上代码,可以看到我设置item行间距是8,列间距是5,我还想设置左右的缩进.就要用到其他的协议方法.

重点来了~~~

调整item之间行 行(横)间距

图是拿的别人😢

调用方法如下:

UICollectionViewFlowLayout的minimumInteritemSpacing(推荐这个,尽量少用协议)

协议方法

//每个item之间的间距-(CGFloat)collectionView:(UICollectionView*)collectionView layout:(UICollectionViewLayout*)collectionViewLayout minimumInteritemSpacingForSectionAtIndex:(NSInteger)section{returnkItemSpacing;}

调整item之间的 列(纵)间距

图是拿的别人😢

调用方法如下:

UICollectionViewFlowLayout的minimumLineSpacing(推荐这个,尽量少用协议)

协议方法

//每个item之间的间距-(CGFloat)collectionView:(UICollectionView*)collectionView layout:(UICollectionViewLayout*)collectionViewLayout minimumLineSpacingForSectionAtIndex:(NSInteger)section{returnkLineSpacing;}

调整item 的大小

UICollectionViewFlowLayout的itemSize

协议方法

//每个单元格的大小size-(CGSize)collectionView:(UICollectionView*)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath*)indexPath{returnCGSizeMake(width,height);}

调整内容的边距(cell的左右上下缩进)

图是拿的别人😢

UICollectionViewFlowLayout的sectionInset

协议方法:

//边距设置:整体边距的优先级,始终高于内部边距的优先级-(UIEdgeInsets)collectionView:(UICollectionView*)collectionView layout:(UICollectionViewLayout*)collectionViewLayout insetForSectionAtIndex:(NSInteger)section{returnUIEdgeInsetsMake(kSectionMargin,kSectionMargin,kSectionMargin,kSectionMargin);//分别为上、左、下、右}

以上几个协议都出自UICollectionViewDelegateFlowLayout

//item的大小-(CGSize)collectionView:(UICollectionView*)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath*)indexPath;//内容整体边距设置-(UIEdgeInsets)collectionView:(UICollectionView*)collectionView layout:(UICollectionViewLayout*)collectionViewLayout insetForSectionAtIndex:(NSInteger)section;//item 列间距(纵)-(CGFloat)collectionView:(UICollectionView*)collectionView layout:(UICollectionViewLayout*)collectionViewLayout minimumLineSpacingForSectionAtIndex:(NSInteger)section;//item 行间距(横)-(CGFloat)collectionView:(UICollectionView*)collectionView layout:(UICollectionViewLayout*)collectionViewLayout minimumInteritemSpacingForSectionAtIndex:(NSInteger)section;//headerview的size-(CGSize)collectionView:(UICollectionView*)collectionView layout:(UICollectionViewLayout*)collectionViewLayout referenceSizeForHeaderInSection:(NSInteger)section;//footer的size-(CGSize)collectionView:(UICollectionView*)collectionView layout:(UICollectionViewLayout*)collectionViewLayout referenceSizeForFooterInSection:(NSInteger)section;

以上方法都有对应的属性:

@property(nonatomic)CGFloat minimumLineSpacing;@property(nonatomic)CGFloat minimumInteritemSpacing;@property(nonatomic)CGSize itemSize;@property(nonatomic)CGSize estimatedItemSizeNS_AVAILABLE_IOS(8_0);// defaults to CGSizeZero - setting a non-zero size enables cells that self-size via -preferredLayoutAttributesFittingAttributes:@property(nonatomic)UICollectionViewScrollDirection scrollDirection;// default is UICollectionViewScrollDirectionVertical@property(nonatomic)CGSize headerReferenceSize;@property(nonatomic)CGSize footerReferenceSize;@property(nonatomic)UIEdgeInsets sectionInset;

我加上内容的整体边距(缩进)之后,效果如下:

我是有缩进的效果~

作者:魏什么_多喝水

链接:https://www.jianshu.com/p/40914d5708af

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

相关文章

网友评论

      本文标题:iOS - UICollectionView cell间距调整

      本文链接:https://www.haomeiwen.com/subject/hnqfnctx.html