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;

目录
相关文章
|
Swift iOS开发
iOS 用一个布局来解决嵌套问题—— UICollectionViewCompositionalLayout
iOS 用一个布局来解决嵌套问题—— UICollectionViewCompositionalLayout
iOS 用一个布局来解决嵌套问题—— UICollectionViewCompositionalLayout
|
安全 iOS开发
iOS页面布局:UIScrollView的布局问题
iOS页面布局:UIScrollView的布局问题
873 63
|
iOS开发
iOS布局中的抗被拉伸、抗压缩优先级
iOS布局中的抗被拉伸、抗压缩优先级
1322 0
|
iOS开发
IOS15上纯代码布局之导航控制器的导航条为透明的问题
IOS15上纯代码布局之导航控制器的导航条为透明的问题
466 0
|
iOS开发
IOS使用纯代码布局替换掉默认的storyboard
IOS使用纯代码布局替换掉默认的storyboard
442 0
|
iOS开发
iOS流布局UICollectionView系列三——使用FlowLayout进行更灵活布局(一)
iOS流布局UICollectionView系列三——使用FlowLayout进行更灵活布局
536 0
iOS流布局UICollectionView系列三——使用FlowLayout进行更灵活布局(一)
|
开发框架 前端开发 Android开发
安卓与iOS开发中的跨平台策略
在移动应用开发的战场上,安卓和iOS两大阵营各据一方。随着技术的演进,跨平台开发框架成为开发者的新宠,旨在实现一次编码、多平台部署的梦想。本文将探讨跨平台开发的优势与挑战,并分享实用的开发技巧,帮助开发者在安卓和iOS的世界中游刃有余。
|
iOS开发 开发者
uniapp开发ios打包Error code = -5000 Error message: Error: certificate file(p12) import failed!报错问题如何解决
uniapp开发ios打包Error code = -5000 Error message: Error: certificate file(p12) import failed!报错问题如何解决
1087 67
uniapp开发ios打包Error code = -5000 Error message: Error: certificate file(p12) import failed!报错问题如何解决
|
iOS开发 开发者 MacOS
深入探索iOS开发中的SwiftUI框架
【10月更文挑战第21天】 本文将带领读者深入了解Apple最新推出的SwiftUI框架,这一革命性的用户界面构建工具为iOS开发者提供了一种声明式、高效且直观的方式来创建复杂的用户界面。通过分析SwiftUI的核心概念、主要特性以及在实际项目中的应用示例,我们将展示如何利用SwiftUI简化UI代码,提高开发效率,并保持应用程序的高性能和响应性。无论你是iOS开发的新手还是有经验的开发者,本文都将为你提供宝贵的见解和实用的指导。
588 66

热门文章

最新文章