iOS流布局UICollectionView系列三——使用FlowLayout进行更灵活布局(二)

简介: iOS流布局UICollectionView系列三——使用FlowLayout进行更灵活布局

三、UICollectionViewFlowLayout相关属性方法


       UICollectionViewFlowLayout是系统提供给我们一个封装好的流布局设置类,其中有一些布局属性我们可以进行设置:



设置行与行之间的间距最小距离


@property (nonatomic) CGFloat minimumLineSpacing;



设置列与列之间的间距最小距离


@property (nonatomic) CGFloat minimumInteritemSpacing;



设置每个item的大小


@property (nonatomic) CGSize itemSize;



设置每个Item的估计大小,一般不需要设置



@property (nonatomic) CGSize estimatedItemSize NS_AVAILABLE_IOS(8_0);



设置布局方向



@property (nonatomic) UICollectionViewScrollDirection scrollDirection;


这个UICollectionViewScrollDirection的枚举如下:


typedef NS_ENUM(NSInteger, UICollectionViewScrollDirection) {

   UICollectionViewScrollDirectionVertical,//水平布局

   UICollectionViewScrollDirectionHorizontal//垂直布局

};


设置头视图尺寸大小


@property (nonatomic) CGSize headerReferenceSize;



设置尾视图尺寸大小


@property (nonatomic) CGSize footerReferenceSize;



设置分区的EdgeInset


@property (nonatomic) UIEdgeInsets sectionInset;


这个属性可以设置分区的偏移量,例如我们在刚才的例子中添加如下设置:


layout.sectionInset = UIEdgeInsetsMake(20, 20, 20, 20);

效果如下,会看到分区的边界闪出了20像素



image.png


下面这两个方法设置分区的头视图和尾视图是否始终固定在屏幕上边和下边



@property (nonatomic) BOOL sectionHeadersPinToVisibleBounds NS_AVAILABLE_IOS(9_0);


@property (nonatomic) BOOL sectionFootersPinToVisibleBounds NS_AVAILABLE_IOS(9_0);


四、动态的配置layout的相关属性UICollectionViewDelegateFlowLayout


       上面的方法在创建FlowLayout时静态的进行设置,如果我们需要动态的设置这些属性,就像我们例子中的,每个item的大小会有差异,我们可以通过代理来实现。


       UICollectionViewDelegateFlowLayout是UICollectionViewDelegate的子协议,其中常用方法如下,我们只需要实现我们需要的即可:



动态设置每个Item的尺寸大小


- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath;



动态设置每个分区的EdgeInsets



- (UIEdgeInsets)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout insetForSectionAtIndex:(NSInteger)section;



动态设置每行的间距大小


- (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout minimumLineSpacingForSectionAtIndex:(NSInteger)section;



动态设置每列的间距大小


- (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout minimumInteritemSpacingForSectionAtIndex:(NSInteger)section;



动态设置某个分区头视图大小


- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout referenceSizeForHeaderInSection:(NSInteger)section;



动态设置某个分区尾视图大小


- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout referenceSizeForFooterInSection:(NSInteger)section;

目录
相关文章
|
9月前
|
Swift iOS开发
iOS 用一个布局来解决嵌套问题—— UICollectionViewCompositionalLayout
iOS 用一个布局来解决嵌套问题—— UICollectionViewCompositionalLayout
iOS 用一个布局来解决嵌套问题—— UICollectionViewCompositionalLayout
|
7月前
|
iOS开发
iOS布局中的抗被拉伸、抗压缩优先级
iOS布局中的抗被拉伸、抗压缩优先级
449 0
|
Android开发 iOS开发
IOS开发之UIScrollView约束布局
IOS开发之UIScrollView约束布局
349 0
|
API iOS开发 开发者
iOS文本布局探讨之三——使用TextKit框架进行富文本布局
iOS文本布局探讨之三——使用TextKit框架进行富文本布局
327 0
iOS文本布局探讨之三——使用TextKit框架进行富文本布局
|
程序员 iOS开发 开发者
iOS开发:设置UICollectionView不同大小的item的方法
在iOS开发过程中,UICollectionView的使用作为iOS开发者来说都不陌生,但是要想完美的玩转UICollectionView的所有使用的技巧,还是需要了解很多的。本篇博文来分享一下关于UICollectionView设置不同大小item的方法,为的是迎合产品的需求,方便记录为了以后查看使用,分享给有需要的人。
531 0
iOS开发:设置UICollectionView不同大小的item的方法
|
iOS开发
iOS UICollectionView 从右向左对齐的实现
iOS UICollectionView 从右向左对齐的实现
509 0
iOS UICollectionView 从右向左对齐的实现
|
iOS开发 开发者
iOS文本布局探讨之二——关于TextKit框架中的字体描述
iOS文本布局探讨之二——关于TextKit框架中的字体描述
199 0
iOS文本布局探讨之二——关于TextKit框架中的字体描述
|
iOS开发 容器
iOS文本布局探讨之一——文本布局框架TextKit浅析(二)
iOS文本布局探讨之一——文本布局框架TextKit浅析
329 0
|
1月前
|
API 数据安全/隐私保护 iOS开发
利用uni-app 开发的iOS app 发布到App Store全流程
利用uni-app 开发的iOS app 发布到App Store全流程
88 3
|
3月前
|
存储 iOS开发
iOS 开发,如何进行应用的本地化(Localization)?
iOS 开发,如何进行应用的本地化(Localization)?
122 2