iOS进度条显示
一、实现下载文件进度控制
1.代码示例
- 1 #import "YYViewController.h"
- 2
- 3 @interface YYViewController ()
- 4 @property(nonatomic,strong)NSMutableData *fileData;
- 5 @property(nonatomic,strong)NSFileHandle *writeHandle;
- 6 @property(nonatomic,assign)long long currentLength;
- 7 @property(nonatomic,assign)long long sumLength;
- 8 @property (weak, nonatomic) IBOutlet UIProgressView *progress;
- 9
- 10 - (IBAction)star;
- 11
- 12 @end
- 13
- 14 @implementation YYViewController
- 15
- 16 - (void)viewDidLoad
- 17 {
- 18 [super viewDidLoad];
- 19 }
- 20
- 21 - (IBAction)star {
- 22
- 23
- 24 //创建下载路径
- 25
- 26 NSURL *url=[NSURL URLWithString:@"http://192.168.0.109:8080/MJServer/resources/video.zip"];
- 27
- 28 //创建一个请求
- 29 NSURLRequest *request=[NSURLRequest requestWithURL:url];
- 30
- 31 //发送请求(使用代理的方式)
- 32 // NSURLConnection *connt=
- 33 [NSURLConnection connectionWithRequest:request delegate:self];
- 34 // [connt start];
- 35
- 36 }
- 37
- 38 #pragma mark- NSURLConnectionDataDelegate代理方法
- 39 /*
- 40 *当接收到服务器的响应(连通了服务器)时会调用
- 41 */
- 42 -(void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
- 43 {
- 44 //1.创建文件存储路径
- 45 NSString *caches=[NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject];
- 46 NSString *filePath=[caches stringByAppendingPathComponent:@"video.zip"];
- 47
- 48
- 49
- 50 //2.创建一个空的文件,到沙盒中
- 51 NSFileManager *mgr=[NSFileManager defaultManager];
- 52 //刚创建完毕的大小是o字节
- 53 [mgr createFileAtPath:filePath contents:nil attributes:nil];
- 54
- 55 //3.创建写数据的文件句柄
- 56 self.writeHandle=[NSFileHandle fileHandleForWritingAtPath:filePath];
- 57
- 58 //4.获取完整的文件的长度
- 59 self.sumLength=response.expectedContentLength;
- 60 }
- 61
- 62 /*
- 63 *当接收到服务器的数据时会调用(可能会被调用多次,每次只传递部分数据)
- 64 */
- 65 -(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
- 66 {
- 67 //累加接收到的数据
- 68 self.currentLength+=data.length;
- 69
- 70 //计算当前进度(转换为double型的)
- 71 double progress=(double)self.currentLength/self.sumLength;
- 72 self.progress.progress=progress;
- 73
- 74 //一点一点接收数据。
- 75 NSLog(@"接收到服务器的数据!---%d",data.length);
- 76
- 77 //把data写入到创建的空文件中,但是不能使用writeTofile(会覆盖)
- 78 //移动到文件的尾部
- 79 [self.writeHandle seekToEndOfFile];
- 80 //从当前移动的位置,写入数据
- 81 [self.writeHandle writeData:data];
- 82 }
- 83
- 84 /*
- 85 *当服务器的数据加载完毕时就会调用
- 86 */
- 87 -(void)connectionDidFinishLoading:(NSURLConnection *)connection
- 88 {
- 89 NSLog(@"下载完毕");
- 90
- 91 //关闭连接,不再输入数据在文件中
- 92 [self.writeHandle closeFile];
- 93 //销毁
- 94 self.writeHandle=nil;
- 95
- 96 //在下载完毕后,对进度进行清空
- 97 self.currentLength=0;
- 98 self.sumLength=0;
- 99
- 100
- 101 }
- 102 /*
- 103 *请求错误(失败)的时候调用(请求超时\断网\没有网\,一般指客户端错误)
- 104 */
- 105 -(void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
- 106 {
- 107 }
- 108 @end
2.显示
模拟器显示:
打印查看:
iOS进度条显示的更多相关文章
- 【Winform】使用BackgroundWorker控制进度条显示进度
许多开发者看见一些软件有进度条显示进度,自己想弄,项目建好后发现并没有自己想象中的那么简单...看了网上很多教程后,写了一个小Demo供网友们参考~~,Demo的网址:http://pan.baidu ...
- Extjs 使用fileupload插件上传文件 带进度条显示
一.首先我们看看官方给出的插件的解释: 一个文件上传表单项具有自定义的样式,并且可以控制按钮的文本和 像文本表单的空文本类似的其他特性. 它使用一个隐藏的文件输入元素,并在用户选择文件后 在form提 ...
- Ajax上传文件进度条显示
要实现进度条的显示,就要知道两个参数,上传的大小和总文件的大小 html5提供了一个上传过程事件,在上传过程中不断触发,然后用已上传的大 小/总大小,计算上传的百分比,然后用这个百分比控制div框的显 ...
- 【Android】读取sdcard卡上的全部图片而且显示,读取的过程有进度条显示
尽管以下的app还没有做到快图浏览.ES文件浏览器的水平,遇到大sdcard还是会存在读取过久.内存溢出等问题,可是基本思想是这种. 例如以下图.在sdcard卡上有4张图片, 打开app,则会吧sd ...
- Qt flash_eraseall nandwrite 进度条显示擦除、烧录
/***************************************************************************** * Qt flash_eraseall n ...
- MFC读写.txt文件时进度条显示实时进度
整体实现方式:先获得文件长度,然后用每次读取的长度,计算出完成的百分比,用百分比的值设置进度条. 一.MFC进度条 Progress Control 相关函数 1. create() --创建Prog ...
- iOS 获取内存大小使用情况(进度条显示)
一.获取设备内存大小方法 //返回存储内存占用比例 - (NSString *)getFreeDiskspaceRate{ float totalSpace; .f; NSError *error = ...
- ajaxSubmit() 上传文件和进度条显示
1. 首先引用js文件 <script type="text/javascript" src="/js/jquery/jquery.form.js"&g ...
- Python 计算π及进度条显示
一,首先打开命令提示符找到Python路径,输入pip install tqdm下载第三方库tpdm. 二,写程序 法一 from math import * from tqdm import tqd ...
随机推荐
- 代码管理工具之git的学习
1.代码管理工具git的学习 http://www.ruanyifeng.com/blog/2015/12/git-cheat-sheet.html 2.github的使用帮助 https:// ...
- iOS ARC内存管理
iOS的内存管理机制,只要是iOS开发者,不管多长的时间经验,都能说出来一点,但是要深入的理解.还是不简单的.随着ARC(自动管理内存)的流行.iOS开发者告别了手动管理内存的复杂工作.但是自动管理内 ...
- Pycharm: keyboard reference
Source: Official set ♥ Editing Ctrl + Space Basic code completion (the name of any class, method or ...
- Javascript中document.execCommand()的用法
document.execCommand()方法处理Html数据时常用语法格式如下:document.execCommand(sCommand[,交互方式, 动态参数]) 其中:sCommand为指令 ...
- “Word自动更改后的内容保存到通用文档模板上。是否加载该模板?“的解决办法
在win7系统下,Word2010出现了不能正常关闭.打开一个已有word文档,点击右上角关闭按钮后,先提示"word已停止工作,windows正在检查该问题的解决方案",随后提示 ...
- C# where用法
where 子句用于指定类型约束,这些约束可以作为泛型声明中定义的类型参数的变量. 1.接口约束. 例如,可以声明一个泛型类 MyGenericClass,这样,类型参数 T 就可以实现 ICompa ...
- 需要安全认证的远程EJB调用示例(Jboss EAP 6.2环境)
一,Remote EJB 服务接口定义: package yjmyzz.ejb.server.helloworld; public interface HelloWorldService { publ ...
- Android -- TouchDelegate
设计规定 Android4.0设计规定的有效可触摸的UI元素标准是48dp,这是一个用户手指能准确并且舒适触摸的区域. 如下图所示,你的UI元素可能小于48dp,图标仅有32dp,按钮仅有40dp,但 ...
- Qt5 新特性
Qt 5 已经临近发布,其最大的特点就是模块化.将原来庞大的模块更细分为不同的部分,同时,一个大版本的升级,当然少不了添加.删除各个功能类.文本简单介绍 Qt5 的特性,其具体内容来自 Qt5 官方 ...
- JQuery fullCalendar 时间差 排序获取距当前最近的时间。
let time = (wo: WoDto) => wo.ScheduleTime || wo.ScheduleStartTime; let wo = technician.wos .filte ...