zoukankan      html  css  js  c++  java
  • DZNEmptyDataSet,优秀的空白页或者出错页封装

    简介

    image

    项目主页: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 {
       
    	}
    

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

  • 相关阅读:
    转载 listview的一种常用布局
    转载 Android gallery实现图片的左右循环旋转
    转载 android 所有布局属性和UI控件
    转载 android 支持展开/收缩功能的列表控件
    svn实现文件/目录的共享
    linux 下命令行修改IP地址
    oracle 10g数据库闪回配置与使用
    Oracle数据库实例启动不了怎么办?
    oracle 权限列表
    apache 配置虚拟目录
  • 原文地址:https://www.cnblogs.com/ios122/p/5143159.html
Copyright © 2011-2022 走看看