星空网 > 软件开发 > 操作系统

水平方向瀑布流

水平方向瀑布流

水平方向瀑布流images/loading.gif' data-original="http://images2015.cnblogs.com/blog/607542/201605/607542-20160505101124794-177603231.gif" />

 

效果

水平方向瀑布流

 

源码

https://github.com/YouXianMing/Animations

//// GridFlowLayoutViewController.m// Animations//// Created by YouXianMing on 16/5/5.// Copyright © 2016年 YouXianMing. All rights reserved.//#import "GridFlowLayoutViewController.h"#import "UIView+SetRect.h"#import "GridLayout.h"#import "FlowStyleCell.h"#import "FileManager.h"#import "NSString+MD5.h"#import "NSData+JSONData.h"#import "ResponseData.h"#import "Math.h"#import "GCD.h"static NSString *picturesSource = @"http://www.duitang.com/album/1733789/masn/p/0/50/";@interface GridFlowLayoutViewController () <UICollectionViewDataSource, UICollectionViewDelegate, GridLayoutDelegate>@property (nonatomic, strong) UICollectionView *collectionView;@property (nonatomic)     CGFloat      rowHeight;@property (nonatomic, strong) NSMutableArray  *datas;@property (nonatomic, strong) ResponseData   *picturesData;@property (nonatomic, strong) NSMutableArray  <WaterfallPictureModel *> *dataSource;@end@implementation GridFlowLayoutViewController- (void)setup {    [super setup];    _dataSource = [NSMutableArray new];    // 初始化布局文件  CGFloat gap        = 1;  NSInteger rowCount    = arc4random() % 3 + 2;  _rowHeight        = (self.contentView.height - (rowCount + 1) * gap) / (CGFloat)rowCount;  GridLayout *layout    = [GridLayout new];  layout.manager.edgeInsets = UIEdgeInsetsMake(gap, gap, gap, gap);  layout.manager.gap    = gap;  layout.delegate      = self;    NSMutableArray *rowHeights = [NSMutableArray array];  for (int i = 0; i < rowCount; i++) {        [rowHeights addObject:@(_rowHeight)];  }  layout.manager.rowHeights = rowHeights;    self.collectionView                = [[UICollectionView alloc] initWithFrame:self.contentView.bounds                                      collectionViewLayout:layout];  self.collectionView.delegate            = self;  self.collectionView.dataSource           = self;  self.collectionView.backgroundColor        = [UIColor clearColor];  self.collectionView.showsHorizontalScrollIndicator = NO;  self.collectionView.alpha             = 0;  [self.collectionView registerClass:[FlowStyleCell class] forCellWithReuseIdentifier:@"FlowStyleCell"];  [self.contentView addSubview:self.collectionView];    // 获取数据  [GCDQueue executeInGlobalQueue:^{        NSString *string    = [picturesSource lowerMD532BitString];    NSString *realFilePath = [FileManager theRealFilePath:[NSString stringWithFormat:@"~/Documents/%@", string]];    NSData  *data     = nil;        if ([FileManager fileExistWithRealFilePath:realFilePath] == NO) {            data = [[NSData alloc] initWithContentsOfURL:[NSURL URLWithString:picturesSource]];      [data writeToFile:realFilePath atomically:YES];          } else {            data = [NSData dataWithContentsOfFile:realFilePath];    }        NSDictionary *dataDic = [data toListProperty];        [GCDQueue executeInMainQueue:^{            self.picturesData = [[ResponseData alloc] initWithDictionary:dataDic];      if (self.picturesData.success.integerValue == 1) {                for (int i = 0; i < self.picturesData.data.blogs.count; i++) {                    [_dataSource addObject:self.picturesData.data.blogs[i]];        }                [_collectionView reloadData];        [UIView animateWithDuration:0.5f animations:^{                    _collectionView.alpha = 1.f;        }];      }    }];  }];}- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section {    return self.dataSource.count;}- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {    WaterfallPictureModel *pictureModel = _dataSource[indexPath.row];    FlowStyleCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"FlowStyleCell" forIndexPath:indexPath];  cell.indexPath   = indexPath;  cell.data      = pictureModel;  cell.rowHeight   = _rowHeight;  [cell loadContent];    return cell;}- (CGFloat)itemWidthWithIndexPath:(NSIndexPath *)indexPath {    WaterfallPictureModel *pictureModel = _dataSource[indexPath.row];    return [Math resetFromSize:CGSizeMake(pictureModel.iwd.floatValue, pictureModel.iht.floatValue)        withFixedHeight:_rowHeight].width;}@end

 

细节

继承UICollectionViewLayout

水平方向瀑布流

重载UICollectionViewLayout的四个方法

水平方向瀑布流

部分实现细节

水平方向瀑布流

水平方向瀑布流

 




原标题:水平方向瀑布流

关键词:

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

海运出口泰国:https://www.goluckyvip.com/tag/89752.html
泰国出口海运:https://www.goluckyvip.com/tag/89753.html
上海到泰国曼谷海运:https://www.goluckyvip.com/tag/89754.html
去泰国海运:https://www.goluckyvip.com/tag/89755.html
上海至泰国海运:https://www.goluckyvip.com/tag/89756.html
泰国海运运输价格:https://www.goluckyvip.com/tag/89758.html
长治婚庆女司仪和主持人:https://www.vstour.cn/a/366176.html
北京丰台区水上乐园哪家好玩?:https://www.vstour.cn/a/366177.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流