• Stars
    star
    333
  • Rank 126,100 (Top 3 %)
  • Language
    Objective-C
  • License
    MIT License
  • Created almost 7 years ago
  • Updated over 3 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

功能描述:WSLWaterFlowLayout 是在继承于UICollectionViewLayout的基础上封装的控件, 目前支持竖向瀑布流(item等宽不等高、支持头脚视图)、水平瀑布流(item等高不等宽 不支持头脚视图)、竖向瀑布流( item等高不等宽、支持头脚视图)、栅格布局瀑布流 4种样式的瀑布流布局。

WSLWaterFlowLayout

简书地址:https://www.jianshu.com/p/9fafd89c97ad ( 此库年久失修,不建议直接使用,可以学习看看)

瀑布流

功能描述:WSLWaterFlowLayout 是在继承于UICollectionViewLayout的基础上封装的控件, 目前支持竖向瀑布流(item等宽不等高、支持头脚视图)、水平瀑布流(item等高不等宽 不支持头脚视图)、竖向瀑布流( item等高不等宽、支持头脚视图)、栅格布局瀑布流 4种样式的瀑布流布局。

  • 前言 :近几个月一直在忙公司的ChinaDaily项目,没有抽出时间来写简书,现在终于算是告一段落了,抽出时间来更一篇😁

  • 实现:主要是重写父类的几个涉及布局属性的方法,在对应的布局属性方法中根据需求自定义视图布局属性信息。详情看示例

/** 初始化 生成每个视图的布局信息*/
-(void)prepareLayout;
/** 决定一段区域所有cell和头尾视图的布局属性*/
-(NSArray<UICollectionViewLayoutAttributes *> *)layoutAttributesForElementsInRect:(CGRect)rect ;
/** 返回indexPath位置cell对应的布局属性*/
-(UICollectionViewLayoutAttributes *)layoutAttributesForItemAtIndexPath:(NSIndexPath *)indexPath;
/** 返回indexPath位置头和脚视图对应的布局属性*/
- (UICollectionViewLayoutAttributes *)layoutAttributesForSupplementaryViewOfKind:(NSString *)elementKind atIndexPath:(NSIndexPath *)indexPath;
//返回内容高度
-(CGSize)collectionViewContentSize;
  • 用法:注意遵循WSLWaterFlowLayoutDelegate协议,代理方法和TableView、collectionView的代理方法用法相似。 下面是WSLWaterFlowLayout.h中的属性方法和代理方法,含义注释的还算清晰:
typedef enum {
    WSLWaterFlowVerticalEqualWidth = 0, /** 竖向瀑布流 item等宽不等高 */
    WSLWaterFlowHorizontalEqualHeight = 1, /** 水平瀑布流 item等高不等宽 不支持头脚视图*/
    WSLWaterFlowVerticalEqualHeight = 2,  /** 竖向瀑布流 item等高不等宽 */
    WSLWaterFlowHorizontalGrid = 3,  /** 特为国务院客户端原创栏目滑块样式定制-水平栅格布局  仅供学习交流*/
    WSLLineWaterFlow = 4 /** 线性布局 待完成,敬请期待 */
} WSLFlowLayoutStyle; //样式

@class WSLWaterFlowLayout;

@protocol WSLWaterFlowLayoutDelegate <NSObject>

/**
 返回item的大小
 注意:根据当前的瀑布流样式需知的事项:
 当样式为WSLWaterFlowVerticalEqualWidth 传入的size.width无效 ,所以可以是任意值,因为内部会根据样式自己计算布局
 WSLWaterFlowHorizontalEqualHeight 传入的size.height无效 ,所以可以是任意值 ,因为内部会根据样式自己计算布局
 WSLWaterFlowHorizontalGrid   传入的size宽高都有效, 此时返回列数、行数的代理方法无效,
 WSLWaterFlowVerticalEqualHeight 传入的size宽高都有效, 此时返回列数、行数的代理方法无效
 */
- (CGSize)waterFlowLayout:(WSLWaterFlowLayout *)waterFlowLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath;

/** 头视图Size */
-(CGSize )waterFlowLayout:(WSLWaterFlowLayout *)waterFlowLayout sizeForHeaderViewInSection:(NSInteger)section;
/** 脚视图Size */
-(CGSize )waterFlowLayout:(WSLWaterFlowLayout *)waterFlowLayout sizeForFooterViewInSection:(NSInteger)section;

@optional  //以下都有默认值
/** 列数*/
-(CGFloat)columnCountInWaterFlowLayout:(WSLWaterFlowLayout *)waterFlowLayout;
/** 行数*/
-(CGFloat)rowCountInWaterFlowLayout:(WSLWaterFlowLayout *)waterFlowLayout;

/** 列间距*/
-(CGFloat)columnMarginInWaterFlowLayout:(WSLWaterFlowLayout *)waterFlowLayout;
/** 行间距*/
-(CGFloat)rowMarginInWaterFlowLayout:(WSLWaterFlowLayout *)waterFlowLayout;
/** 边缘之间的间距*/
-(UIEdgeInsets)edgeInsetInWaterFlowLayout:(WSLWaterFlowLayout *)waterFlowLayout;

@end

@interface WSLWaterFlowLayout : UICollectionViewLayout

/** delegate*/
@property (nonatomic, weak) id<WSLWaterFlowLayoutDelegate> delegate;
/** 瀑布流样式*/
@property (nonatomic, assign) WSLFlowLayoutStyle  flowLayoutStyle;

@end

初始化仅三行代码,只需设置代理和样式,item的大小、头脚视图的大小、行列数以及间距都可以在对应样式的代理方法中自定义:

    WSLWaterFlowLayout * _flow = [[WSLWaterFlowLayout alloc] init];
    _flow.delegate = self;
    _flow.flowLayoutStyle = WSLVerticalWaterFlow;

更新于2018/8/12: 新增样式4-栅格布局样式的瀑布流,如下图 简书地址:https://www.jianshu.com/p/f40bbe437265

栅格布局样式

赞.gif

GitHub项目README.md设置徽标(环境、build、下载量...)

GitHub上 README 增加图片标签

shields.io标签生成官网

http://github.com/donggelaile/HDCollectionView.git

推荐学习资料:

Swift从入门到精通

恋上数据结构与算法(一)

恋上数据结构与算法(二)

Welcome To Follow Me

您的follow和start,是我前进的动力,Thanks♪(・ω・)ノ

欢迎扫描下方二维码关注——奔跑的程序猿iOSer——微信公众号:iOS2679114653 本公众号是一个iOS开发者们的分享,交流,学习平台,会不定时的发送技术干货,源码,也欢迎大家积极踊跃投稿,(择优上头条) ^_^分享自己开发攻城的过程,心得,相互学习,共同进步,成为攻城狮中的翘楚!

iOS开发进阶之路.jpg

More Repositories

1

iOS_Tips

iOS的一些示例,持续更新中:1、AVFoundation 高仿微信相机拍摄和编辑 2、AVFoundation 人脸检测、实时滤镜、音视频编解码、GPUImage框架的使用等音视频相关内容 3、OpenGLES 4、LeetCode算法练习 5、iOS Crash防护和APM监控 6、WKWebView相关的内容 等........
Objective-C
1,217
star
2

WKWebView

WKWebView的使用、JS和OC的交互、网页内容加载进度条的实现、WKWebView+UITableView混排 、 WKWebView离线缓存
Objective-C
474
star
3

LyricsAnalysis

iOS音乐播放器之锁屏效果(仿网易云音乐和QQ音乐)+歌词解析 :锁屏歌曲信息、控制台远程控制音乐播放:暂停/播放、上一首/下一首、快进/快退、列表菜单弹框和拖拽控制台的进度条调节进度(结合了QQ音乐和网易云音乐在锁屏状态下的效果)、歌词解析并随音乐滚动显示。
Objective-C
195
star
4

UIActivityViewController

仿简书分享--系统原生分享:利用UIActivityViewController实现系统原生分享,不需要三方SDK,支持自定义分享,可以分享到微博、微信、QQ、信息、邮件、备忘录、通讯录、剪贴板、FaceBook.....等等
Objective-C
150
star
5

WSLTransferAnimation

iOS 自定义转场动画集锦:新浪微博图片浏览转场效果、网易云音乐启动屏转场动画、手势过渡动画、开关门动画、全屏侧滑Pop返回和UIScrollView、UISlider三者手势滑动事件冲突
Objective-C
143
star
6

ScanQRcode

功能描述:WSLNativeScanTool是在利用原生API的条件下封装的二维码扫描工具,支持二维码的扫描、识别图中二维码、生成自定义颜色和中心图标的二维码、监测环境亮度、打开闪光灯这些功能;WSLScanView是参照微信封装的一个扫一扫界面,支持线条颜色、大小、动画图片、矩形扫描框样式的自定义;这个示例本身就是仿照微信的扫一扫功能实现的。
Objective-C
102
star
7

UITableViewLinkage

iOS UITableView/UICollectionView获取特定位置的cell,解决UITableView/UICollectionView联动、获取处于UITableView/UICollectionView中心的cell等这类与特定cell位置有关的问题
Objective-C
76
star
8

UIScrollViewAnimation

UIScrollView视觉差动画,仿凤凰新闻的推荐新闻版块效果
Objective-C
72
star
9

SwiftStudy

Swift学习之微博朋友圈列表功能实现
Swift
70
star
10

WSLAPP

音乐播放器,新闻,壁纸,画板,二维码,计分器,一个我自己做的完整的项目源码
Objective-C
62
star
11

MultilevelList

TableView多级列表:分级展开或合并,逐级获取并展示其子级数据,可以设置最大的层级数,支持多选、单选、取消选择。
Objective-C
61
star
12

SensorDemo

指纹识别、运动传感器、加速计、环境光感、距离传感器、指南针、陀螺仪等传感器示例集锦
Objective-C
58
star
13

WSL_RollView

功能描述:WSL_RollView 是基于UICollectionView实现的支持水平和垂直两个方向上的的分页和渐进循环轮播效果,可以设置时间间隔、渐进速率、是否循环、分页宽度和间隔,还支持高度自定义分页视图的控件。
Objective-C
57
star
14

Compass

高仿系统指南针效果
Objective-C
31
star
15

CoreDataLearn

CoreData增删改查、数据库升级
Objective-C
27
star
16

WSLPictureBrowser

功能描述:支持网络和本地gif、jpeg等格式图片的浏览、捏合或双击放大缩小、长按保存到本地相册、获取gif图片的循环次数和时长。
Objective-C
26
star
17

AlgorithmSet

LeetCode 算法练习集合 ~ 每天一道算法题
Swift
19
star
18

YanZhengCode

图片验证码和滑块验证码
Objective-C
12
star
19

ContactsSort

通讯录排序,类似微信通讯录
Objective-C
9
star
20

GOVAVPlayer

GOVVideoPlayer/GOVVideoController是一个基于AVPlayer封装的视频播放器,支持播放/暂停、左右退拽快进、上下滑动调节音量、有缓冲进度指示条、和卡顿指示器.
Objective-C
7
star
21

AppIconBadge

解决在前台时重启应用和设置应用角标的问题
Objective-C
6
star
22

Draw

涂鸦画板:画笔颜色、粗细、橡皮擦、撤销功能等
Objective-C
6
star
23

WSLScrollView

UIScrollerView当前显示3张图:这是在继承UIView的基础上利用UIScrollerView进行了封装,支持循环轮播、自动轮播、自定义时间间隔、图片间隔、当前页码和图片大小,采用Block返回当前页码和处理当前点击事件的一个View。
Objective-C
2
star
24

Wsl2Ls.github.io

欢迎来前往我的博客查看效果 https://wsl2ls.github.io 或者我的简书:https://www.jianshu.com/p/55bf6559aa93
HTML
1
star
25

iOS_TipsPreview

iOS_Tips系列效果预览图,示例代码主工程在 https://github.com/wsl2ls/iOS_Tips
1
star
26

iOS10NotificationAndRegularExpression

iOS10通知和正则表达式
Objective-C
1
star
27

progressLabelAndWaterProgress

水波纹进度和文字进度动画以及镂空文字
1
star
28

AlarmClock

闹铃,刮刮乐,拼图
Objective-C
1
star
29

APPInternational

APP国际化
Objective-C
1
star
30

MVx

MVC、MVP、MVVM 比较
Objective-C
1
star