iOS 不规则瀑布流

    iOS 自从出了UICollectionview之后,界面的样式可谓更加的多元化,对于一些较为复杂的界面UICollectionview都可以相对轻松的实现,而且由于其 FlowLayout 子类的存在,界面的布局更可谓是随心所欲,下面就来介绍下在处理图片中比较爱用到的瀑布流,我这里和一些其他人的方法不一样,我是重写了它的一个类来实现的瀑布流,那么废话不多说,直接上 Demo

  首先我们需要创建一个类,基于UICollectionViewLayout 然后重写系统的协议方法

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

获取每个 item 的大小 ( 如果不重写的话 , 在当前的 .m 文件里得不到 size, 没有代理人去调用该方法得到 size)



  这里为.h的代码:

@protocol myCollectionFlowLayoutDelegate <NSObject>


//重写系统的协议方法 获取每个item的大小 (如果不重写的话,在当前的.m文件里得不到size,没有代理人去调用该方法得到size)

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


@end



@interface myCollectionFlowlayout : UICollectionViewLayout


@property (nonatomic ,assign)id <myCollectionFlowLayoutDelegate>myCollectionFlowLayout;

@property (nonatomic ,retain)NSMutableArray *array;

@property (nonatomic ,assign)CGFloat maxHiget;

@property (nonatomic ,retain)UICollectionViewLayoutAttributes *attributes;


   下面为.m 里的代码:

//重写系统prepareLayout方法,准备布局item之前会调用

- (void)prepareLayout{

    

    [super prepareLayout];

    

    //重新设置滚动范围时用

    self.maxHiget = 0;

    //用来存放item的属性

    self.array = [NSMutableArray array];

    //设置每列item y坐标的初始值

    CGFloat LeftY = 60,MidY = 60,ReightY = 60;

    //计算contentView 第一步

    CGFloat maxLeft = 0,maxMid = 0 ,maxRight = 0

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值