博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
DZNEmptyDataSet,优秀的空白页或者出错页封装
阅读量:5030 次
发布时间:2019-06-12

本文共 3959 字,大约阅读时间需要 13 分钟。

简介

image

项目主页:

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

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

导入工程

自动,

pod 'DZNEmptyDataSet'

手动

下载解压,Source文件夹下的文件拖入工程

导入头文件:

#import "UIScrollView+EmptyDataSet.h"

初始化

@interface MainViewController : UITableViewController 
- (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 {       }

注: 文章由我们 iOS122(http://www.ios122.com)的小伙伴 @酌晨茗 整理,喜欢就一起参与:

转载于:https://www.cnblogs.com/ios122/p/5143159.html

你可能感兴趣的文章
Python中sys模块sys.argv取值并判断
查看>>
并查集
查看>>
ubuntu 11.04下android开发环境的搭建!
查看>>
一件趣事
查看>>
atom 调用g++编译cpp文件
查看>>
H3C HDLC协议特点
查看>>
iptables 网址转译 (Network address translation,NAT)
查看>>
ios __block typeof 编译错误解决
查看>>
android 插件形式运行未安装apk
查看>>
ios开发之 manage the concurrency with NSOperation
查看>>
Android权限 uses-permission
查看>>
NSEnumerator用法小结
查看>>
vim如何配置go语言环境
查看>>
机器学习好网站
查看>>
python 中的 sys , os 模块用法总结
查看>>
解题:国家集训队 Middle
查看>>
响应者链
查看>>
指针从函数内部带回返回值
查看>>
在使用webView播放flash或视频文件时无法关闭声音的问题
查看>>
redhat 7 源码安装 mysql5.5.49
查看>>