iOS 实现瀑布流的三个关键方法

本文介绍了如何在iOS中实现瀑布流布局,强调了通过继承UICollectionViewLayout创建自定义布局的重要性。通过理解并应用三个关键方法,开发者可以创建多列、间距可控的瀑布流效果,以更有效地展示内容。内容包括创建自定义布局子类,设置列数和间距,以及利用布局信息和高度字典动态调整视图布局。
摘要由CSDN通过智能技术生成

瀑布流布局提供了一种在有限的视图区域内尽可能多的展示更多的内容,它可以摒弃掉iOS默认布局(UICollectionViewFlowLayout)的不规整的缺点。百度图片就是使用的横向的流式布局方式:虽然图片的size各有不同,通过把他们约束在相同高度、不同长度的视图内(高度一定,等比例缩放长度),实现规整的排列。

iOS中实瀑布流有很多方式:多列UITableView、使用UIScrollView等等,但最常见的还是实现继承于UICollectionViewLayout的子类,自定义布局方式。在Code4App网站上一搜就能搜到很多,而且都是封装好的类直接可以拿来用。鉴于此这里只以一个简单例子介绍实现瀑布流的三个关键方法。

创建一个UICollectionViewLayout的子类:CustomViewLayout。

在.h 文件中添加两个属性:int型的m_numberOfColums 用于记录视图中有几列,float型的m_interItemSpacing用于记录图片视图之间的间距。在定义一个向使用改布局的UICollectionView对象的协议方法。这是.h文件应该是这样的:

#import <UIKit/UIKit.h>

@class CustomViewLayout;
@protocol CustomViewLayoutDelegate <NSObject>
//--向代理询问每个item的高度的协议方法--
- (float)collectionView:(UICollectionView *)view layout:(CustomViewLayout *)layout heightForItemAtIndexPath:(NSIndexPath *)indexPath;

@end

@interface CustomViewLayout : UICollectionViewLayout

@property (nonatomic,assign)int m_numberOfColums;
@property (nonatomic,assign)float m_interItemSpacing;

@end

在.m文件中添加两个属性:NSMutableArray类型的m_allItemAttributeArray 用于存储每个视图的布局信息(LayoutAttributes),NSMutableDictionary类型的m_everyColumsHeightDic 用于存储每列的最新高度,每次新加入一个视图时将向该字典询问最短的列,根据最短列的高度生成该视图的布局信息然后更

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值