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 ...
随机推荐
- viewTemplate
今天发现maya的属性编辑器界面似乎可以用xml来写,放在 /文档/maya/20xx/prefs这样的地方 发现一个很牛的maya插件SOuP,其中把一些近年论文的算法也集成进去了,网站在这里: h ...
- Moom for mac 最棒的窗口管理软件
win7下,鼠标拖动窗口向左.右,两个窗口就在一个桌面上平分秋色了 mac下只能使用三只爪向上的手势查看当前桌面运行的程序,或者三只爪左右滑动查看全屏显示的其他程序,有时候一边看书一边敲代码很不方便 ...
- PHP命令行模式
<?php error_reporting(E_ALL); header('Content-Type:text/plain;charset=utf-8'); interface CommandA ...
- PAT 1016. 部分A+B (15)
正整数A的"DA(为1位整数)部分"定义为由A中所有DA组成的新整数PA.例如:给定A = 3862767,DA = 6,则A的"6部分"PA是66,因为A中有 ...
- 微软职位内部推荐-Service Engineer II for Azure Cloud Network
微软近期Open的职位: Are you interested in helping to drive the direction of a product that defines the clou ...
- Visual Studio 2012 cannot identify IHttpActionResult
使用ASP.NET Web API构造基于restful风格web services,IHttpActionResult是一个很好的http结果返回接口. 然而发现在vs2012开发环境中,Syste ...
- linux磁盘分区-系统安装
零 系统下载: https://lists.centos.org/pipermail/centos-announce/2016-May/021895.html 往下拉可以看到 一 系统安装 1, 2, ...
- 用C++11的std::async代替线程的创建
c++11中增加了线程,使得我们可以非常方便的创建线程,它的基本用法是这样的: void f(int n); std::thread t(f, n + 1); t.join(); 但是线程毕竟是属于比 ...
- cocos2dx-2.2.1 免 Cygwin 环境搭建(Win8+VS2013+ADT Bundle+android-ndk-r9c)
1.下载 ADT Bundle 解压到D盘 D:\adt-bundle-windows-x86_64-20131030: 2.下载 NDK-R9C,解压到 ADT 目录下:D:\adt-bundle- ...
- 以HTML为表现的日志记录组件
日志搬家:http://www.loogn.net/blog/Article.aspx?id=21 关于日志记录,如果你不想随用随写,又不想用log4net的话,也许你可以了解一下这个! 我也是个很懒 ...