封装一个对于无网络、无内容时展示的库,进来看一下动图秒懂

前言

由于公司项目做的新闻资讯,必然少不了对于无新闻内容的展示和对于无网络时的展示
举个例子:当加载新闻详情页时处于一个无网络状态时,我们就需要对其进行展示无网络图片,好了,需求明白了

来张gif图瞬间明了

应用中示例.gif

不墨迹,直接贴github,希望各路大神来喷

开启传送门:

WyhShowEmpty

先来张demo展示图

demo示例.gif

思路

首先肯定应该能做到全局对于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 ,支持一下,谢谢各位

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,251评论 4 61
  • WebSocket-Swift Starscream的使用 WebSocket 是 HTML5 一种新的协议。它实...
    香橙柚子阅读 24,117评论 8 183
  • 过了十里荷塘,要转一个弯,转弯的地方有一棵乌桕树,今天它的叶子红了! 上一周看见它,树叶还是嫩黄色的,站在树下,阳...
    边走边唱A阅读 504评论 0 2
  • 来吧 让我们扑向田野 不要拒绝 泥土是干净的 三月 飞鸟夺回天空 桃花也开成想要的样子 让我扛上锄头 种花,种菜,...
    鹰鹰儿阅读 240评论 1 3