前言
由于公司项目做的新闻资讯,必然少不了对于无新闻内容
的展示和对于无网络
时的展示
举个例子:当加载新闻详情页时处于一个无网络状态时,我们就需要对其进行展示无网络图片,好了,需求明白了
来张gif
图瞬间明了
不墨迹,直接贴github
,希望各路大神来喷
开启传送门:
先来张demo
展示图
思路
首先肯定应该能做到全局对于ViewController
进行无网络/无内容展示,那么索性直接对UIViewController
添加方法 (类别)
其次若展示无内容时,应需要针对数据源
进行判断展示,例如当数据源
为空时,即展示无内容
,那么方法参数里起码应该包含数据源个数信息
其次就是因人而异,任人发挥的自定义样式
问题了,这个不做过多解释
注意大神可以移步了,以下是很基础的解释说明,耐心的就多看一会吧,支持一下
所有文件
类建的虽然多,但我觉得不能少,为了以后好维护,可以多增加一些功能,整体框架不能变,队形不能散
UIViewController+WyhShowEmpty
为主体文件,处理布局和逻辑判断,说到布局,就需要运用一点最基础的<objc-runtime>
机制在类别中添加属性
Style文件
是单独抽出来的类, 用于处理所有子控件的样式,这也是最合理的部分,这样就实现了对于样式的抽离,在主体文件是根据样式进行分配init
的
其他类不做过多解释了,代码大家下载去看吧
应用中实际调用代码示例:
-(void)loadNetWork{
[[AFHTTPSessionManager manager] POST:url parameters:body progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
if ([responseObject[@"code"] isEqualToNumber:@0]) {
dispatch_async(dispatch_get_main_queue(), ^{
[self.tableView reloadData];
//成功回调里添加
[self wyh_showEmptyMsg:@"很抱歉暂无更新" dataCount:self.dataSource];
});
}
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
//失败回调里添加
[self wyh_showEmptyMsg:@"网络不给力,点击刷新" dataCount:0 isHasBtn:YES Handler:^{
[self loadNetWork];
}];
}];
}
修复内容如下
增加对于UIView的类别,并使其成为底层实现,ViewController是针对UIView的封装
修复了在移除empty后依然有点击事件的bug
修复了在不同尺寸的View上还依然展示屏幕大小的empty的bug
喜欢的github
帮点个star
,支持一下,谢谢各位
网友评论