DZNEmptyDataSet,优秀的空白页或者出错页封装

简介

项目主页:https://github.com/dzenbot/DZNEmptyDataSet

提示:主要用于UITableView和UICollectionView,也可以用于UIScrollView,其实主要是前两个会用到空白或者网络出错页

采用给UIScrollView添加代理方法来给页面添加空白页,源码很有学习意义

导入工程

自动,

pod 'DZNEmptyDataSet'

手动

https://github.com/dzenbot/DZNEmptyDataSet 下载解压,Source文件夹下的文件拖入工程

导入头文件:

#import "UIScrollView+EmptyDataSet.h"

初始化

    @interface MainViewController : UITableViewController <DZNEmptyDataSetSource, DZNEmptyDataSetDelegate>

    - (void)viewDidLoad {
         [super viewDidLoad];

         self.tableView.emptyDataSetSource = self;
         self.tableView.emptyDataSetDelegate = self;

    //这行代码必须加上,可以去除tableView的多余的线,否则会影响美观
         self.tableView.tableFooterView = [UIView new];
    }

满足代理方法,可以分别配置,都是可选的

空白页图片

    - (UIImage *)imageForEmptyDataSet:(UIScrollView *)scrollView {
    return [UIImage imageNamed:@"empty_placeholder"];
    }

图片的动画效果

    - (CAAnimation *)imageAnimationForEmptyDataSet:(UIScrollView *)scrollView {
    CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath: @"transform"];

    animation.fromValue = [NSValue valueWithCATransform3D:CATransform3DIdentity];
    animation.toValue = [NSValue valueWithCATransform3D:CATransform3DMakeRotation(M_PI_2, 0.0, 0.0, 1.0)];

    animation.duration = 0.25;
    animation.cumulative = YES;
    animation.repeatCount = MAXFLOAT;

    return animation;
    }

标题文本,详细描述,富文本样式

    - (NSAttributedString *)titleForEmptyDataSet:(UIScrollView *)scrollView {
    NSString *text = @"Please Allow Photo Access";

    NSDictionary *attributes = @{NSFontAttributeName: [UIFont boldSystemFontOfSize:18.0f],
                                 NSForegroundColorAttributeName: [UIColor darkGrayColor]};

    return [[NSAttributedString alloc] initWithString:text attributes:attributes];
    }
    
    - (NSAttributedString *)descriptionForEmptyDataSet:(UIScrollView *)scrollView {
    NSString *text = @"This allows you to share photos from your library and save photos to your camera roll.";

    NSMutableParagraphStyle *paragraph = [NSMutableParagraphStyle new];
    paragraph.lineBreakMode = NSLineBreakByWordWrapping;
    paragraph.alignment = NSTextAlignmentCenter;

    NSDictionary *attributes = @{NSFontAttributeName: [UIFont systemFontOfSize:14.0f],
                                 NSForegroundColorAttributeName: [UIColor lightGrayColor],
                                 NSParagraphStyleAttributeName: paragraph};

    return [[NSAttributedString alloc] initWithString:text attributes:attributes];                      
    }

按钮文本或者背景样式

    - (NSAttributedString *)buttonTitleForEmptyDataSet:(UIScrollView *)scrollView forState:(UIControlState)state {
    NSDictionary *attributes = @{NSFontAttributeName: [UIFont boldSystemFontOfSize:17.0f]};

    return [[NSAttributedString alloc] initWithString:@"Continue" attributes:attributes];
    }
    
    - (UIImage *)buttonImageForEmptyDataSet:(UIScrollView *)scrollView forState:(UIControlState)state {
    return [UIImage imageNamed:@"button_image"];
    }

空白页的背景色

    - (UIColor *)backgroundColorForEmptyDataSet:(UIScrollView *)scrollView {
    return [UIColor whiteColor];
    }

如果需求无法满足,你可以自定义

    - (UIView *)customViewForEmptyDataSet:(UIScrollView *)scrollView {
    //加入你自定义的view
    UIActivityIndicatorView *activityView = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];
    [activityView startAnimating];
    return activityView;
    }

其他需求

    //是否显示空白页,默认YES
    - (BOOL)emptyDataSetShouldDisplay:(UIScrollView *)scrollView {
    return YES;
    }
    
    //是否允许点击,默认YES
    - (BOOL)emptyDataSetShouldAllowTouch:(UIScrollView *)scrollView {
    return YES;
    }
    
    //是否允许滚动,默认NO
    - (BOOL)emptyDataSetShouldAllowScroll:(UIScrollView *)scrollView {
    return YES;
    }
    
    //图片是否要动画效果,默认NO
    - (BOOL) emptyDataSetShouldAllowImageViewAnimate:(UIScrollView *)scrollView {
    return YES;
    }
    
    //空白页点击事件
    - (void)emptyDataSetDidTapView:(UIScrollView *)scrollView {
    
    }
    
    //空白页按钮点击事件
    - (void)emptyDataSetDidTapButton:(UIScrollView *)scrollView {
   
    }

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏一“技”之长

iOS开发一款小巧简洁的日历控件 原

        日 历是iOS开发中有时会用到的一个UI控件,网上开源的代码也很多,我浏览过一些,大致有两种模式,一种是日历的逻辑由开发者自己实现,通过计算闰年...

712
来自专栏技术总结

DWIntrosPage 简单定制引导页

下面摘取部分代码 DWIntrosPageContentViewController

665
来自专栏DannyHoo的专栏

iOS开中设置UITabBar的背景图片以及各个item的选中图片和未选中

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010105969/article/details/...

543
来自专栏Guangdong Qi

小Q项目框架搭建及会动的Tabbar未完待续,持续更新中

1434
来自专栏iOS开发攻城狮的集散地

iOS 全屏侧滑手势/UIScrollView/UISlider间滑动手势冲突

方案一:这个跟UIScrollView的一个属性delaysContentTouches有关。

732
来自专栏freesan44

关于Autolayout和Masonry自动布局的几个坑

自动布局 02 Mar 2016 Comments 前言 最近遇到一个复杂视图:根控制器里面有上下两个子控制器,子控制器中各自实现类似PageView的...

732
来自专栏DannyHoo的专栏

iOS开发中简单的图片浏览器

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010105969/article/details/...

682
来自专栏青玉伏案

iOS开发之多表视图滑动切换示例(仿"头条"客户端)

  好长时间没为大家带来iOS开发干货的东西了,今天给大家分享一个头条新闻客户端各个类别进行切换的一个示例。在Demo中对所需的组件进行的简单封装,在封装的组件...

2286
来自专栏陈满iOS

iOS开发验证:设置UITableView的Footer视图透明

其实,上述的方法可以将视图背景改成非透明色,比如红色。但改成透明的时候,还是会显示灰色,不是真正的透明。

481
来自专栏iOSer成长记录

MJRefresh 源码阅读

1782

扫码关注云+社区