目录
前言
一个用于UITableView、UICollectionView 空数据或者出错时展示View的三方库
建议还是自己整一个这样的View(在出错或者空数据时用来展示),不必使用DZNEmptyDataSet。
图片
标题
描述
按钮(重新加载)
使用
pod 'DZNEmptyDataSet'
#import <DZNEmptyDataSet/UIScrollView+EmptyDataSet.h>
遵守<DZNEmptyDataSetSource,DZNEmptyDataSetDelegate>
设置UICollectionView/UITableView的emptyDataSetSource、emptyDataSetDelegate
实现相关协议
<DZNEmptyDataSetSource,DZNEmptyDataSetDelegate>
#pragma mark - DZNEmptyDataSetSource,DZNEmptyDataSetDelegate
- (UIImage *)imageForEmptyDataSet:(UIScrollView *)scrollView{
return [UIImage imageNamed:@"zanwuzhiboIcon"];
}
- (void)emptyDataSet:(UIScrollView *)scrollView didTapButton:(UIButton *)button {
[self fq_loadData];
}
-(BOOL)emptyDataSetShouldDisplay:(UIScrollView *)scrollView{
return self.isShouldShowEmpty;
}
-(BOOL)emptyDataSetShouldAllowScroll:(UIScrollView *)scrollView{
return true;
}
#pragma mark GET
-(UICollectionView *)collectionView{
if(!_collectionView){
UICollectionViewFlowLayout *fl=[UICollectionViewFlowLayout new];
[fl setScrollDirection:UICollectionViewScrollDirectionVertical];
_collectionView=[[UICollectionView alloc]initWithFrame:CGRectZero collectionViewLayout:fl];
[_collectionView setBackgroundColor:[UIColor clearColor]];
[_collectionView setDelegate:self];
[_collectionView setDataSource:self];
[_collectionView setAlwaysBounceVertical:true];
[_collectionView setEmptyDataSetSource:self];
[_collectionView setEmptyDataSetDelegate:self];
if (@available(iOS 11.0, *)) {
[_collectionView setContentInsetAdjustmentBehavior:UIScrollViewContentInsetAdjustmentNever];
} else {
self.automaticallyAdjustsScrollViewInsets = NO;
}
}
return _collectionView;
}
UIScrollView+EmptyDataSet.h 头文件说明
#import <UIKit/UIKit.h>
@protocol DZNEmptyDataSetSource;
@protocol DZNEmptyDataSetDelegate;
#define DZNEmptyDataSetDeprecated(instead) DEPRECATED_MSG_ATTRIBUTE(" Use " # instead " instead")
@interface UIScrollView (EmptyDataSet)
// DZNEmptyDataSetSource
@property (nonatomic, weak) IBOutlet id <DZNEmptyDataSetSource> emptyDataSetSource;
// DZNEmptyDataSetDelegate
@property (nonatomic, weak) IBOutlet id <DZNEmptyDataSetDelegate> emptyDataSetDelegate;
// 空数据图是否正在展示(readonly)
@property (nonatomic, readonly, getter = isEmptyDataSetVisible) BOOL emptyDataSetVisible;
// 强制刷新(会调用相关代理)
- (void)reloadEmptyDataSet;
@end
@protocol DZNEmptyDataSetSource <NSObject>
@optional
// 富文本标题
- (NSAttributedString *)titleForEmptyDataSet:(UIScrollView *)scrollView;
// 富文本描述
- (NSAttributedString *)descriptionForEmptyDataSet:(UIScrollView *)scrollView;
// 图片
- (UIImage *)imageForEmptyDataSet:(UIScrollView *)scrollView;
// 图片填充色(Default is nil)
- (UIColor *)imageTintColorForEmptyDataSet:(UIScrollView *)scrollView;
// 图片动画
- (CAAnimation *) imageAnimationForEmptyDataSet:(UIScrollView *) scrollView;
// 按钮标题 富文本
- (NSAttributedString *)buttonTitleForEmptyDataSet:(UIScrollView *)scrollView forState:(UIControlState)state;
// 按钮图片
- (UIImage *)buttonImageForEmptyDataSet:(UIScrollView *)scrollView forState:(UIControlState)state;
// 按钮背景图
- (UIImage *)buttonBackgroundImageForEmptyDataSet:(UIScrollView *)scrollView forState:(UIControlState)state;
// 背景色
- (UIColor *)backgroundColorForEmptyDataSet:(UIScrollView *)scrollView;
// 自定义空白视图(不使用系统自带的空白视图)
// will ignore -offsetForEmptyDataSet and -spaceHeightForEmptyDataSet
- (UIView *)customViewForEmptyDataSet:(UIScrollView *)scrollView;
// 默认纵向居中,负值向上,正值向下(Default is CGPointZero.)
- (CGFloat)verticalOffsetForEmptyDataSet:(UIScrollView *)scrollView;
// 纵向间距(Default is 11 pts)
- (CGFloat)spaceHeightForEmptyDataSet:(UIScrollView *)scrollView;
@end
@protocol DZNEmptyDataSetDelegate <NSObject>
@optional
// 是否淡入显示(Default is YES.)
- (BOOL)emptyDataSetShouldFadeIn:(UIScrollView *)scrollView;
// 是否强制显示(Default is NO)
- (BOOL)emptyDataSetShouldBeForcedToDisplay:(UIScrollView *)scrollView;
// 是否显示(Default is YES.)
- (BOOL)emptyDataSetShouldDisplay:(UIScrollView *)scrollView;
// 是否允许触摸(Default is YES.)
- (BOOL)emptyDataSetShouldAllowTouch:(UIScrollView *)scrollView;
// 是否允许滚动(Default is NO.)
- (BOOL)emptyDataSetShouldAllowScroll:(UIScrollView *)scrollView;
// 是否允许图片动画(Default is NO.)
- (BOOL)emptyDataSetShouldAnimateImageView:(UIScrollView *)scrollView;
// 空视图被点击后调用
- (void)emptyDataSet:(UIScrollView *)scrollView didTapView:(UIView *)view;
// 按钮被点击后调用
- (void)emptyDataSet:(UIScrollView *)scrollView didTapButton:(UIButton *)button;
// 空视图即将显示时回调
- (void)emptyDataSetWillAppear:(UIScrollView *)scrollView;
// 空视图显示后回调
- (void)emptyDataSetDidAppear:(UIScrollView *)scrollView;
// 空视图即将消失时回调
- (void)emptyDataSetWillDisappear:(UIScrollView *)scrollView;
// 空视图消失后回调
- (void)emptyDataSetDidDisappear:(UIScrollView *)scrollView;
@end
#undef DZNEmptyDataSetDeprecated
网友评论