提示框框架KVNProgress介绍
gitHub上面有很多显示加载进度的框架,这里我们介绍一下KVNProgress框架,KVNProgress是一个可以完全定制的HUD(指示器),你可以设置加载进度的画面是否全屏,可以自己修改进度显示的风格,同时这个框架也支持在ipad上面使用,效果如下:

一、导入KVNProgress框架
- 在github上面下载框架,并将相关的文件夹引入到项目中

- 在工程中添加所需头文件
- #import "KVNProgress.h"
二、关键属性及方法介绍
- @property (nonatomic, getter = isFullScreen) BOOL fullScreen;//设置是否全屏显示
- + (void)show; //显示提示框
- + (void)showWithStatus:(NSString *)status; // 在图形的下方添加描述状态的文字
- + (void)showProgress:(CGFloat)progress; // 用0-1表示进度加载的%0-%100
- + (void)showProgress:(CGFloat)progress status:(NSString*)status; // 在显示进度的图形下面自定义一段文字
- + (void)showSuccessWithStatus:(NSString *)status;//显示加载成功
- + (void)showErrorWithStatus:(NSString *)status;//显示加载失败
- + (void)dismiss;//移除提示框
- + (void)updateStatus:(NSString*)status; //根据进度更新图形下方的文字
- + (void)updateProgress:(CGFloat)progress animated:(BOOL)animated; //更新此时加载的进度
- + (void)setConfiguration:(KVNProgressConfiguration *)newConfiguration;//设置进度视图的样式
- + (instancetype)defaultConfiguration;//默认图形样式
三、使用场景1:基本使用

- 添加相关属性
- #import "ViewController.h"
- #import "KVNProgress.h"
- @interface ViewController ()
- //框架相关属性
- @property (nonatomic) KVNProgressConfiguration *basicConfiguration;//显示进度的图形为基本样式
- @property (nonatomic, strong) UIButton *basicBtn;//显示基本样式的按钮
- @end
- 使用懒加载方式初始化用到的控件
- - (UIButton *)basicBtn{
- if (!_basicBtn) {
- _basicBtn = [[UIButton alloc] initWithFrame:CGRectMake(119, 136, 137, 30)];
- [_basicBtn setTitle:@"basic" forState:UIControlStateNormal];
- _basicBtn.backgroundColor = [UIColor grayColor];
- [_basicBtn addTarget:self action:@selector(basic) forControlEvents:UIControlEventTouchUpInside];
- [self.view addSubview:_basicBtn];
- }
- return _basicBtn;
- }
- - (void)viewDidLoad {
- [super viewDidLoad];
- [self myWebView];
- [self basicBtn];
- //设置加载进度图形的样式为基本样式
- [KVNProgress setConfiguration:self.basicConfiguration];
- //设置基本样式为默认的样式
- self.basicConfiguration = [KVNProgressConfiguration defaultConfiguration];
- }
- 完成KVNProgress的相关设置
- - (void) basic{
- [KVNProgress show];
- //延时1秒以后移除提示框
- dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.0f * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
- self.basicConfiguration.tapBlock = nil;
- [KVNProgress dismiss];
- });
- }
四、使用场景2:加载成功与加载错误
当我们登陆成功或者登陆失败之后,经常出现一个相关的提示框,如下图:


- 添加相关属性
- @property (nonatomic, strong) UIButton *successBtn;
- @property (nonatomic, strong) UIButton *errorBtn;
- 使用懒加载方式初始化用到的控件
- - (UIButton *)successBtn{
- if (!_successBtn) {
- _successBtn = [[UIButton alloc] initWithFrame:CGRectMake(119, 241, 137, 30)];
- [_successBtn setTitle:@"success" forState:UIControlStateNormal];
- _successBtn.backgroundColor = [UIColor grayColor];
- [_successBtn addTarget:self action:@selector(success) forControlEvents:UIControlEventTouchUpInside];
- [self.view addSubview:_successBtn];
- }
- return _successBtn;
- }
- - (UIButton *)errorBtn{
- if (!_errorBtn) {
- _errorBtn = [[UIButton alloc] initWithFrame:CGRectMake(119, 341, 137, 30)];
- [_errorBtn setTitle:@"error" forState:UIControlStateNormal];
- _errorBtn.backgroundColor = [UIColor grayColor];
- [_errorBtn addTarget:self action:@selector(error) forControlEvents:UIControlEventTouchUpInside];
- [self.view addSubview:_errorBtn];
- }
- return _errorBtn;
- }
- 完成KVNProgress的相关设置
- - (void) success{
- [KVNProgress show];
- dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(4.0f * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
- self.basicConfiguration.tapBlock = nil;
- //提示加载成功
- [KVNProgress showSuccessWithStatus:@"Success"];
- });
- }
- - (void) error{
- [KVNProgress show];
- dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(4.0f * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
- self.basicConfiguration.tapBlock = nil;
- //提示加载失败
- [KVNProgress showErrorWithStatus:@"Error"];
- });
- }
五、使用场景3:复杂使用
在我们加载网页的时候,需要根据它的加载情况来改变提示框中的图形,如下图:


- 添加相关属性及其代理协议
- @interface ViewController ()
- @property (nonatomic, strong) UIButton *complexBtn;
- @property (nonatomic, strong) UIWebView *myWebView;
- @end
- 使用懒加载方式初始化用到的控件
- - (UIButton *)complexBtn{
- if (!_complexBtn) {
- _complexBtn = [[UIButton alloc] initWithFrame:CGRectMake(119, 441, 137, 30)];
- [_complexBtn setTitle:@"complex" forState:UIControlStateNormal];
- _complexBtn.backgroundColor = [UIColor grayColor];
- [_complexBtn addTarget:self action:@selector(complex) forControlEvents:UIControlEventTouchUpInside];
- [self.view addSubview:_complexBtn];
- }
- return _complexBtn;
- }
- - (UIWebView *)myWebView{
- if (!_myWebView) {
- _myWebView = [[UIWebView alloc] initWithFrame:self.view.bounds];
- NSURL *url = [NSURL URLWithString:@"http://www.hcios.com"];
- NSURLRequest *myRequest = [NSURLRequest requestWithURL:url];
- [_myWebView loadRequest:myRequest];
- _myWebView.delegate = self;
- [self.view addSubview:_myWebView];
- }
- return _myWebView;
- }
- 完成KVNProgress的相关设置
- - (void) complex{
- //创建一个视图控制器用来显示webView
- UIViewController *myController = [[UIViewController alloc] init];
- //创建一个返回原来控制器的按钮
- UIButton *backBtn = [[UIButton alloc] initWithFrame:CGRectMake(10,10, 50, 50)];
- [backBtn setTitle:@"返回" forState:UIControlStateNormal];
- backBtn.backgroundColor = [UIColor redColor];
- [backBtn addTarget:self action:@selector(back) forControlEvents:UIControlEventTouchUpInside];
- [self.myWebView addSubview:backBtn];
- [myController.view addSubview: self.myWebView];
- [self presentViewController:myController animated:YES completion:nil];
- }
- - (void) back{
- [self dismissViewControllerAnimated:YES completion:nil];
- }
- //在webView开始加载时候调用的函数里面设置相应的加载动画
- - (void)webViewDidStartLoad:(UIWebView *)webView{
- //开始加载,文字可以自定义
- [KVNProgress showProgress:0.0f
- status:@"加载中"];
- //延时0.2秒以后更新进度条显示加载到%50的位置
- dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.2 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
- [KVNProgress updateProgress:0.5f
- animated:YES];
- });
- //延时0.5秒以后修改图形下方的文字
- dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
- [KVNProgress updateStatus:@"请耐心等待"];
- });
- }
- //当webView加载完毕以后调用
- - (void)webViewDidFinishLoad:(UIWebView *)webView{
- //加载进度条显示加载完毕
- [KVNProgress updateProgress:1.0f
- animated:YES];
- //延时0.1秒以后隐藏加载进度的图形
- dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
- [KVNProgress dismiss];
- });
- }
六、KVNProgress和示例代码下载
提示框框架KVNProgress介绍的更多相关文章
- UWP中的消息提示框(二)
在UWP中的消息提示框(一)中介绍了一些常见的需要用户主动去干涉的一些消息提示框,接下来打算聊聊不需要用户主动去干涉的一些消息提示框.效果就是像双击退出的那种提示框. 先说说比较简单的吧,通过系统To ...
- 第三方框架MBProgressHUD-----实现各种提示框
程序运行显示如下 : 点击按钮实现对应的提示框: 这里只截取了其中一张图,有兴趣的可以自己运行程序,查看其他的几种提示框哟!!! 第三方框架MBProgressHUD的下载地址:https://git ...
- 基于Metronic的Bootstrap开发框架经验总结(6)--对话框及提示框的处理和优化
在各种Web开发过程中,对话框和提示框的处理是很常见的一种界面处理技术,用得好,可以给用户很好的页面体验,Bootstrap开发也一样,我们往往在页面新增.编辑.查看详细等界面使用弹出对话框层的方式进 ...
- PHP弹出提示框并跳转到新页面即重定向到新页面
本文为大家介绍下使用PHP弹出提示框并跳转到新页面,也就是大家所认为的重定向,下面的示例大家可以参考下 这两天写一个demo,需要用到提示并跳转,主要页面要求不高,觉得没必要使用AJAX,JS等, ...
- ASP.NET 使用AJAX让GridView的数据行显示提示框(ToolTip)
介绍ASP.NET AJAX可以使你的web应用程序具有更丰富的功能和更多的用户响应. 本文中,我将演示如何通过ASP.NET AJAX的帮助,给像GridView这样的数据绑定控件的数据行增加pop ...
- Bootstrap提示框
前面的话 提示框是一个比较常见的功能,一般来说是鼠标移动到特定元素上时,显示相关的提示语.本文将详细介绍Bootstrap提示框 基本用法 Bootstrap框架中的提示框,结构非常简单,常常使用的是 ...
- .Net Core应用框架Util介绍(四)
上篇介绍了Util Angular Demo的目录结构和运行机制,本文介绍Util封装Angular的基本手法及背后的动机. Angular应用由Ts和Html两部分构成,本文介绍第一部分. Angu ...
- (转)基于Metronic的Bootstrap开发框架经验总结(6)--对话框及提示框的处理和优化
http://www.cnblogs.com/wuhuacong/p/4775282.html 在各种Web开发过程中,对话框和提示框的处理是很常见的一种界面处理技术,用得好,可以给用户很好的页面体验 ...
- JS组件系列——Bootstrap寒冬暖身篇:弹出框和提示框效果以及代码展示
前言:对于Web开发人员,弹出框和提示框的使用肯定不会陌生,比如常见的表格新增和编辑功能,一般常见的主要有两种处理方式:行内编辑和弹出框编辑.在增加用户体验方面,弹出框和提示框起着重要的作用,如果你的 ...
随机推荐
- 给vim安装YouCompleteMe
要安装YouCompleteMe ,vim须支持python.看是否支持,可以在vim中:version 查看, 如果python前有+号,就是支持,减号就是不支持. 如果不支持,需要以编译安装方式重 ...
- intellij idea 远程tomcat 调试
由于在服务器上远程调试风险较高,所以万不得已的情况下 不要这样做.可以本地调试好 再上传到服务器上. 1.关闭防火墙 启动Firewalld,及开机自启. # systemctl start fir ...
- HDU 1043 Eight(反向BFS+打表+康托展开)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1043 题目大意:传统八数码问题 解题思路:就是从“12345678x”这个终点状态开始反向BFS,将各 ...
- 三十分钟理解计算图上的微积分:Backpropagation,反向微分
神经网络的训练算法,目前基本上是以Backpropagation (BP) 反向传播为主(加上一些变化),NN的训练是在1986年被提出,但实际上,BP 已经在不同领域中被重复发明了数十次了(参见 G ...
- print、println的区别
System.out.print("a");——后面没有换行符 System.out.println("b");——后面有换行符 换行符:\r和\n以及\r\n ...
- cocos2d-x 开发中使用的一些工具
这些工具平常也用到,不过没有像这样整理出来,这是我在网上看到的.就记录一下. 位图字体工具Bitmap Font Tools BMFont (Windows)FonteditorGlyph Desig ...
- Windows下 Tensorflow安装问题: Could not find a version that satisfies the requirement tensorflow
Tensorflow 需要 Python 3.5/3.6 64bit 版本: 具体的安装方式可查看:https://www.tensorflow.org/install/install_window ...
- 【严蔚敏】【数据结构(C语言版)】 求n的阶乘
阶乘函数为: 使用递归即可求得. #include <stdio.h> #include <stdlib.h> int Fact(int m){ ) ; ); //递归求阶乘 ...
- CentOS7.6使用flatpak安装软件
1.安装flatpak(CentOS 7已默认安装Flatpak) yum -y install flatpak 2.添加Flathub仓库 flatpak remote-add --if-not-e ...
- pyqt5之QColorDialog颜色对话框最简单使用
设置窗体背景颜色 QWidget.setStyleSheet('QWidget {background-color:#88ab45}') 颜色对话框取得颜色值是十六进制. col=QCo ...