# LYEmptyView
不需要遵循协议,不需要设置代理,不需要实现代理方法,只需这一句代码,就可为一个UITableViwe/UICollectionView集成空白页面占位图。<br>`self.tableView.ly_emptyView = [MyDIYEmpty diyNoDataEmpty];`
#### 注意点:
#### 1.除UITableViwe/UICollectionView外,这些View(包括UIScrollView)没有DataSource,代码层面无法判断有无数据,需手动管理显示隐藏,调用示例请移步示例8
#### 2.customView 暂不支持AutoLayout
| 特点 | 描述 |
| ---------- | -----------|
| 与项目完全解耦 | 在需要集成的界面中加入一行代码即可集成,与原代码没有一点耦合度 |
| 0学习成本 | 无需关心视图的显示隐藏时机,只需加入一行代码即可,框架监听了系统刷新UI的方法,其内部计算后自动进行显示隐藏 |
| 调用简单 | 利用分类+runtime,使调用非常简便 |
| 高度自定义 | 利用继承特性,可对框架进行二次封装,使自定义更简便 |
| 支持全部的刷新方法 | reload...、insert...、delete...等方法。你的项目中调用这些刷新方法时,该框架都会自动根据DataSource自动进行计算判断是否显示emptyView |
# 目录
* [一、效果展示](#效果展示)<br>
* [二、集成方式](#集成方式)<br>
* [三、使用参考示例](#使用参考示例)<br>
* [1.一行代码集成空内容视图](#一行代码集成空内容视图)<br>
* [2.自由选择空内容元素](#自由选择空内容元素)<br>
* [3.自定义空内容元素](#自定义空内容元素)<br>
* [4.自定义元素的UI样式](#自定义元素的UI样式)<br>
* [5.二次封装](#二次封装)<br>
* [6.延迟显示emptyView](#延迟显示emptyView)<br>
* [7.特殊需求,手动控制emptyView的显示隐藏](#特殊需求,手动控制emptyView的显示隐藏)<br>
* [8.普通view调用示例](#普通view调用示例)<br>
* [9.占位图完全覆盖父视图](#占位图完全覆盖父视图)<br>
## <a id="效果展示"></a>一、效果展示
![](https://github.com/dev-liyang/LYEmptyView/blob/master/images/ImitateOtherApp.png)
## <a id="集成方式"></a>二、集成方式
1.Cocoapods方式集成: `pod 'LYEmptyView'`<br>
使用时导入头文件 `#import <LYEmptyView/LYEmptyViewHeader.h>`
<br><br>
2.手动下载集成: 将LYEmptyView文件夹,导入你的工程<br>
使用时导入头文件:`#import "LYEmptyViewHeader.h"`
## <a id="使用参考示例"></a>三、使用参考示例
### <a id="一行代码集成空内容视图"></a>1.一行代码集成空内容视图
```Objective-C
//框架方法
self.tableView.ly_emptyView = [LYEmptyView emptyViewWithImageStr:@"noData"
titleStr:@"暂无数据,点击重新加载"
detailStr:@""];
```
PS:可对库进行二次封装,调用更简洁(二次封装方法在下面的示例5中会讲到)
```Objective-C
//二次封装方法,调用简洁
self.tableView.ly_emptyView = [MyDIYEmpty diyNoDataEmpty];
```
完全低耦合,在你的项目中加入这一行代码就可集成<br>
不管项目中是reloadData方法刷UI还是insert、delete等方式刷UI,不需做其他任何操作,只需这一行代码就可实现以下效果
![](https://github.com/dev-liyang/LYEmptyView/blob/master/images/example1.gif)
### <a id="自由选择空内容元素"></a>2.自由选择空内容元素
```Objective-C
交互事件可选择SEL或block方式
self.tableView.ly_emptyView = [LYEmptyView emptyActionViewWithImageStr:@"noData"
titleStr:@"无数据"
detailStr:@"请稍后再试!"
btnTitleStr:@"重新加载"
target:target
action:action];
self.tableView.ly_emptyView = [LYEmptyView emptyActionViewWithImageStr:@"noData"
titleStr:@""
detailStr:@""
btnTitleStr:@""
btnClickBlock:^{}];
// imageStr : 占位图片
// titleStr : 标题
// detailStr : 详细描述
// btnTitleStr : 按钮标题
```
框架提供四个元素,传入相应元素的字符串即可显示对应元素(按钮的显示前提是传入target,action或btnClickBlock)
可根据项目需求,自由进行组合,如下只展示了部分组合效果
![](https://github.com/dev-liyang/LYEmptyView/blob/master/images/example2.png)
### <a id="自定义空内容元素"></a>3.自定义空内容元素
特殊情况下,如果空内容状态布局不满足需求时,可进行自定义<br>
通过方法` + (instancetype)emptyViewWithCustomView:(UIView *)customView;`<br>
传入一个View 即可创建一个自定义的emptyView
```Objective-C
self.tableView.ly_emptyView = [LYEmptyView emptyViewWithCustomView:customView];
```
![](https://github.com/dev-liyang/LYEmptyView/blob/master/images/example3.png)
### <a id="自定义元素的UI样式"></a>4.自定义元素的UI样式
这里自定义UI样式需要很多代码,别担心,在示例5中会讲解二次封装的方式,封装后调用时就只需要一行代码了 ^_^
```Objective-C
//初始化一个emptyView
LYEmptyView *emptyView = [LYEmptyView emptyActionViewWithImageStr:@"noData"
titleStr:@"无数据"
detailStr:@"请稍后再试!"
btnTitleStr:@"重新加载"
btnClickBlock:^{}];
//元素竖直方向的间距
emptyView.subViewMargin = 20.f;
//标题颜色
emptyView.titleLabTextColor = MainColor(90, 180, 160);
//描述字体
emptyView.detailLabFont = [UIFont systemFontOfSize:17];
//按钮背景色
emptyView.actionBtnBackGroundColor = MainColor(90, 180, 160);
//设置空内容占位图
self.tableView.ly_emptyView = emptyView;
```
>这里只列举了一些常用的属性,更多属性请到LYEmptyView.h查看
![](https://github.com/dev-liyang/LYEmptyView/blob/master/images/example4.png)
### <a id="二次封装"></a>5.二次封装
第4小节的示例代码,修改emptyView的样式需要一个个属性单独去改,如果项目中每个界面都这么写就显得很麻烦,而且不易维护<br>
解决办法是对库进行二次封装,二次封装后,对UI样式单独管理,方便维护<br>
##### 1)新建一个类继承自LYEmptyView,例如demo中的MyDIYEmpty
##### 2)重写`- (void)prepare` 方法,并修改想要改变的元素的UI样式
```Objective-C
- (void)prepare{
[super prepare];
self.titleLabFont = [UIFont systemFontOfSize:25];
self.titleLabTextColor = MainColor(90, 180, 160);
self.detailLabFont = [UIFont systemFontOfSize:17];
self.detailLabTextColor = MainColor(180, 120, 90);
self.detailLabMaxLines = 5;
self.actionBtnBackGroundColor = MainColor(90, 180, 160);
self.actionBtnTitleColor = [UIColor whiteColor];
}
```
操作上面的两步就可实现对样式的单独管理<br>
调用方法不变,只是调用的类变成了MYDiyEmpty
```Objective-C
self.tableView.ly_emptyView = [MyDIYEmpty emptyActionViewWithImageStr:@"noData"
titleStr:@"无数据"
detailStr:@"请稍后再试!"
btnTitleStr
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
iOS一行代码集成空白页面占位图(无数据、无网络占位图)_emptyView-empty_set_LYEmptyView.zip (82个子文件)
LYEmptyView-master
LYEmptyViewDemo
HomeListViewController.h 233B
ThirdPart
MB
MBProgressHUD.h 16KB
MBProgressHUD.m 53KB
HomeListViewController.xib 3KB
Base.lproj
Main.storyboard 2KB
LaunchScreen.storyboard 2KB
AppDelegate.h 280B
AppDelegate.m 2KB
main.m 337B
PrefixHeader.pch 658B
Classes
BaseDemoViewController.m 4KB
BaseDemoViewController.h 622B
DIY
MyDIYViewController.xib 6KB
MyDIYEmpty.h 390B
MyDIYViewController.m 5KB
MyDIYEmpty.m 3KB
MyDIYViewController.h 279B
OtherApp
OtherAppViewController.xib 6KB
OtherAppViewController.m 8KB
OtherAppViewController.h 813B
BaseDemoViewController.xib 6KB
Demo
Demo6ViewController.h 244B
Demo5ViewController.m 676B
Demo3ViewController.h 245B
Demo2ViewController.h 244B
DemoEmptyView.h 318B
Demo4ViewController.m 5KB
Demo5ViewController.h 227B
Demo6ViewController.m 2KB
Demo4ViewController.h 244B
DemoEmptyView.m 1KB
Demo1ViewController.m 1KB
Demo1ViewController.h 244B
Demo3ViewController.m 2KB
Demo2ViewController.m 2KB
Info.plist 1KB
HomeListViewController.m 12KB
Assets.xcassets
Contents.json 62B
AppIcon.appiconset
Contents.json 2KB
noNetwork.imageset
noNetwork@2x.png 7KB
Contents.json 309B
empty_image
empty_meituan.imageset
Contents.json 313B
empty_meituan@2x.PNG 23KB
empty_jd.imageset
Contents.json 308B
empty_jd@2x.png 14KB
Contents.json 62B
empty_qq.imageset
empty_qq@2x.PNG 3KB
Contents.json 308B
empty_weibo.imageset
Contents.json 311B
empty_weibo@2x.PNG 7KB
empty_yy.imageset
Contents.json 308B
empty_yy@2x.PNG 81KB
noData.imageset
nodata@2x.png 3KB
Contents.json 306B
.LYEmptyView.podspec.swp 16KB
LICENSE 1KB
LYEmptyViewDemoUITests
LYEmptyViewDemoUITests.m 1KB
Info.plist 680B
LYEmptyView.podspec 514B
LYEmptyView
LYEmptyViewHeader.h 284B
UIView+Empty.h 1KB
LYEmptyBaseView.m 7KB
UIView+LYExtension.m 2KB
LYEmptyBaseView.h 4KB
UIView+LYExtension.h 706B
LYEmptyView.h 4KB
UIView+Empty.m 8KB
LYEmptyView.m 22KB
LYEmptyViewDemoTests
LYEmptyViewDemoTests.m 926B
Info.plist 680B
.LYEmptyView.podspec.swo 12KB
.gitignore 228B
images
example1.gif 1.7MB
example6.gif 879KB
example2.png 106KB
method_swizzling.png 682KB
example3.png 21KB
ImitateOtherApp.png 214KB
example7.gif 368KB
example4.png 30KB
LYEmptyViewDemo.xcodeproj
project.pbxproj 36KB
README.md 14KB
共 82 条
- 1
资源评论
好家伙VCC
- 粉丝: 1814
- 资源: 9088
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功