在开发过程中 ,越来越多的界面都需要进行友好的容错处理,例如:1、在弱网情况下的接口请求,很容易造成请求失败;2、无网情况下的界面显示;3、推进界面后数据为加载之前,显示的UI等等

直接上代码:

#import <UIKit/UIKit.h>typedef void(^BtnActionBlock)();@interface JHLivePlayRemindView : UIView+ shareRemindView;- (void)showInView:(UIView *)superView imageName:(NSString *)imageName remindTxt:(NSString *)remindTxt withBtnBlock:(BtnActionBlock)callBack;- (void)hide;@end

 实现代码:

#import "JHLivePlayRemindView.h"
#import "UIColor+Translate.h"
#define ScreenWidth     [[UIScreen mainScreen] bounds].size.width@interface JHLivePlayRemindView ()
{UIView * containsView;UIImageView * imageView;UILabel * remindLbl;UIButton * refreshBtn ;
}@property (nonatomic,copy)BtnActionBlock btnBlock;@end@implementation JHLivePlayRemindView+ shareRemindView{static JHLivePlayRemindView * remindView = nil;static dispatch_once_t onceToken;dispatch_once(&onceToken, ^{remindView = [[JHLivePlayRemindView alloc] init];});return remindView;
}- (instancetype)init{self = [super init];if (self) {containsView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, ScreenWidth, 265)];containsView.center = self.center;[self addSubview:containsView];imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 140, 165)];[containsView addSubview:imageView];imageView.center = CGPointMake(ScreenWidth/2, imageView.center.y);remindLbl = [[UILabel alloc] initWithFrame:CGRectMake(0, CGRectGetMaxY(imageView.frame) + 20, ScreenWidth, 30)];remindLbl.textColor = [UIColor colorFromHexRGB:@"999999"];remindLbl.font = [UIFont systemFontOfSize:14.0];remindLbl.textAlignment = NSTextAlignmentCenter;[containsView addSubview:remindLbl];refreshBtn = [[UIButton alloc] initWithFrame:CGRectMake(0, CGRectGetMaxY(remindLbl.frame)+10, 90, 30)];[refreshBtn setImage:[UIImage imageNamed:@"JHLivePlayBundle.bundle/refresh.tiff"] forState:UIControlStateNormal];[refreshBtn setImage:[UIImage imageNamed:@"JHLivePlayBundle.bundle/refreshHighlighted.tiff"] forState:UIControlStateHighlighted];[containsView addSubview:refreshBtn];[refreshBtn addTarget:self action:@selector(refreshClick) forControlEvents:UIControlEventTouchUpInside];refreshBtn.center = CGPointMake(ScreenWidth/2, refreshBtn.center.y);containsView.center = CGPointMake(CGRectGetWidth(self.frame)/2, CGRectGetHeight(self.frame)/2);}return self;
}- (void)showInView:(UIView *)superView imageName:(NSString *)imageName remindTxt:(NSString *)remindTxt withBtnBlock:(BtnActionBlock)callBack{self.backgroundColor = [UIColor whiteColor];self.frame = superView.bounds;if ([superView.subviews containsObject:self]) {return;}containsView.frame = CGRectMake(0, 0, ScreenWidth, CGRectGetMaxY(refreshBtn.frame));[superView addSubview:self];[superView bringSubviewToFront:self];containsView.center = CGPointMake(CGRectGetWidth(self.frame)/2, CGRectGetHeight(self.frame)/2);imageView.image = [UIImage imageNamed:imageName];imageView.center = CGPointMake(ScreenWidth/2, imageView.center.y);remindLbl.text = remindTxt;refreshBtn.center = CGPointMake(ScreenWidth/2, refreshBtn.center.y);if (callBack == nil) {refreshBtn.hidden = YES;}else{self.btnBlock = [callBack copy];refreshBtn.hidden = NO;}
}- (void)hide{self.btnBlock = nil;[self removeFromSuperview];
}- (void)refreshClick{self.btnBlock();
}@end

  开出的方法很简单 ,只有三个方法;

真正起作用的方法是

- (void)showInView:(UIView *)superView imageName:(NSString *)imageName remindTxt:(NSString *)remindTxt withBtnBlock:(BtnActionBlock)callBack;

  superView定义为需要添加提示的视图,imageName为本地的图片名称,remindTxt 为提示的文字信息,callback 为给提示按钮增加的点击事件

在完成此基础方法的扩展上 ,可以做很多事情;

  例如:1、增加隐藏按钮的方法,只显示图片和提示文字

   2、增加图片是否存在的判断,在无图片的时候增加默认的提示图片等

     3、增加文字的修饰颜色,字体大小等

4、增加视图显示的过渡动画

有很多地方可以根据自身的需求进行扩展

转载于:https://www.cnblogs.com/tianlin106/p/7447951.html

自定义的无数据提示界面相关推荐

  1. QT-子线程或自定义类操作访问主界面UI控件的几种方法

    前言 QT创建窗体工程,一般在MainWindow或Dialog类里可以直接通过ui指针访问控件,但是添加新的类后又如何访问呢,可以通过以下几种方式: 1.将ui指针公开后直接访问 (1)例如有个自己 ...

  2. 用mel编写自定义节点的属性编辑器界面

    用mel编写自定义节点的属性编辑器界面比较麻烦,而且网上例子又少,下面给出一个范例,说明基本的格式 // 初始化节点时调用 global proc initControl(string $attrNa ...

  3. TP6 自定义404,错误提示页面

    记录:自定义TP6404及错误提示页面. 1,配置config下的app.php配置文件 'exception_tmpl' => app()->isDebug()==true ? app( ...

  4. Layui数据表格显示无数据提示问题

    做项目中,没有数据时候表格中提示 无数据,感觉更友好,有时候没有数据但是确实空白,没有显示 无数据 文本提示,很纳闷,就尝试找了下看是什么问题 后来发现,是开启了字段排序功能,删除排序功能代码就能正常 ...

  5. 一步一步教你自定义博客园(cnblog)界面

    一步一步教你自定义博客园(cnblog)界面 一.总结 二.一步一步教你自定义博客园(cnblog)界面 写在开头 我之前在博客园没怎么发东西,就是觉得博客园的Markdown不支持实时预览,加上ma ...

  6. elementui 表格表头竖着显示_ElementUI中table表格自定义表头Tooltip文字提示

    picture table-header-tips 应用 element 中的 table 组件,自定义表头 Tooltip 文字提示. 效果图 效果图 示例 demo 代码 引用 element-u ...

  7. 关于win8关机太慢停留在关机提示界面解决方法

    随着微软对win8系统的发布,很多用户也开始慢慢接触到了win8系统,使用该系统的用户应该都清楚,win8系统美中不足的应该还是关机问题吧,当我们在不使用电脑的时候正常都会选择关机,直接点击屏幕上的开 ...

  8. android仿qq动态视频播放,Android 自定义ListView实现QQ空间界面(说说内包含图片、视频、点赞、评论、转发功能)...

    前端时间刚好需要做一个类似于QQ空间的社区分享功能,说说内容包含文字(话题.内容).视频.图片,还需包含点赞,评论,位置信息等功能. 就采用LIstview做了一个,先来看下效果,GIF太大,CSDN ...

  9. Android仿抖音我的页面,Android自定义videoview仿抖音界面

    本文实例为大家分享了Android自定义videoview仿抖音界面的具体代码,供大家参考,具体内容如下 1.效果图 和抖音的界面效果一模一样,而且可以自定义,需要什么页面,请自己定义 2.自定义vi ...

最新文章

  1. 《Javascript入门学习全集》 Javascript学习第二季(实战4)
  2. git stash pop_git常用命令行背诵并默写(全)
  3. 工业环境老鼠目标检测
  4. python操作文件夹-Python文件操作大全,随机删除文件夹内的任意文件
  5. 简便的golang orm
  6. 哪一版可以打开pdg 安卓超星图书馆_南安:山区孩子有了数字图书馆
  7. sql server系统表详细说明(转)
  8. python notebooks_Jupyter Notebooks安装及入门
  9. Oracle In Memory最佳实践(附PPT和视频回放)
  10. cad页面布局快捷键_炸裂“图纸集”功能、高手都在偷偷用的CAD图纸管理神器
  11. cdn对动态网站有作用吗_网站选择cdn加速有什么作用?
  12. Linux中如何调整pe的大小,关于LVM PE大小影响VG容量
  13. 01_机器学习课程概述
  14. 虚拟机 Ubuntu安装gcc和g++
  15. 【御数·原创】数据治理的坑你遇到过几个?
  16. linux环境安装ffmepg,Linux centOS下安装FFmpeg
  17. 解决idea中xml注释出现空格和顶格问题
  18. 木子案正判后的故事发展(猜想)
  19. Java代码实现数字签名验证
  20. 另一条路去IOE:全内存数据库弯道超车

热门文章

  1. HtmlAgilityPack 总结(一)
  2. LeetCode: Flatten Binary Tree to Linked List
  3. 单点登陆的技术实现机制
  4. 浅谈使用openwave测试的几个注意项
  5. delphi 回调函数
  6. eclipse修改文件代码不起作用,输出时还是老的,估计是缓存问题
  7. PAT1123 Is It a Complete AVL Tree(AVL树完全二叉树)
  8. 云计算如何重塑和简化大规模IT资产
  9. 2010 年 360 盗取用户密码事件始末
  10. IT人保持健康的必备法宝