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.显示

模拟器显示:

打印查看:

时间: 2024-10-24 21:53:43

iOS进度条显示的相关文章

iOS 进度条、加载、安装动画 —— HERO博客

iOS 进度条.加载.安装动画简单实现. 首先看一下效果图: 下面贴上代码: 控制器ViewController: #import <UIKit/UIKit.h> @interface ViewController : UIViewController @end /*** ---------------分割线--------------- ***/ #import "ViewController.h" #import "HWWaveView.h" #im

【Android】读取sdcard卡上的全部图片而且显示,读取的过程有进度条显示

尽管以下的app还没有做到快图浏览.ES文件浏览器的水平,遇到大sdcard还是会存在读取过久.内存溢出等问题,可是基本思想是这种. 例如以下图.在sdcard卡上有4张图片, 打开app,则会吧sd卡上的全部图片读取,并显示出来.读取的过程有进度条显示. 制作步骤例如以下: 1.首先,res\values\strings.xml对字符设置例如以下,没有什么特别的. <? xml version="1.0" encoding="utf-8"?> <

Struts2 文件上传 进度条显示

参考成功博客:http://blog.sina.com.cn/s/blog_bca9d7e80101bkko.html 待测试博客:http://blog.csdn.net/z69183787/article/details/52536255 Struts2 文件上传 进度条显示

Ajax上传文件进度条显示

要实现进度条的显示,就要知道两个参数,上传的大小和总文件的大小 html5提供了一个上传过程事件,在上传过程中不断触发,然后用已上传的大 小/总大小,计算上传的百分比,然后用这个百分比控制div框的显示,就可以 实现上传的进度条效果 前端页面 <!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Ajax上传文件进度条显示

Delphi下载指定网址(URL)的文件,带进度条显示

Delphi下载指定网址(URL)的文件,带进度条显示 发布于: 2012-12-26 11:21:04   |  发布在: Delphi文章   |  点击:626 主要使用的是Delphi自带的TIdhttp控件.一.界面设置在窗体上放置两个TEdit控件,一个用于输入要下载的文件URL,一个用于输入要保存到本地的文件路径:放置两个TLabel控件,一个显示文件总大小,一个显示当前已下载大小:放置一个按钮TButton,一个TIdhttp控件(在Indy Clients面板)和一个TIdAn

【WInform】使用BackgroundWorker控制进度条显示进度

许多开发者看见一些软件有进度条显示进度,自己想弄,项目建好后发现并没有自己想象中的那么简单...看了网上很多教程后,写了一个小Demo供网友们参考~~,Demo的网址:http://pan.baidu.com/s/1dDIxHvz BackgroundWorker可以在代码中创建,也可以在工具箱中拖,但如果要使用,必须将其的WorkerReportsProgress属性设置为True! 这个Demo是一个复制文件的,为了效果更明显,建议复制的文件多一点,方便进度条显示. 界面如下: 下面是全部代

【Android】读取sdcard卡上的所有图片并且显示,读取的过程有进度条显示

虽然下面的app还没有做到快图浏览.ES文件浏览器的水平,遇到大sdcard还是会存在读取过久.内存溢出等问题,但是基本思想是这样的. 如下图,在sdcard卡上有4张图片, 打开app,则会吧sd卡上的所有图片读取,并显示出来,读取的过程有进度条显示. 制作过程如下: 1.首先,res\values\strings.xml对字符设置如下,没有什么特别的. <?xml version="1.0" encoding="utf-8"?> <resour

Extjs 使用fileupload插件上传文件 带进度条显示

一.首先我们看看官方给出的插件的解释: 一个文件上传表单项具有自定义的样式,并且可以控制按钮的文本和 像文本表单的空文本类似的其他特性. 它使用一个隐藏的文件输入元素,并在用户选择文件后 在form提交的同时执行实际的文件上传. 因为没有安全的跨浏览器以编程的方式对file表单项设值的方式, 所以标准表单项的 setValue 方法是无效的. getvalue方法的返回值取决于使用何种浏览器; 一些仅仅返回文件名, 一些返回一个完整的文件路径, 一些则返回文件的虚拟路径. 二.在我看来这个插件就

iOS 获取内存大小使用情况(进度条显示)

一.获取设备内存大小方法 //返回存储内存占用比例 - (NSString *)getFreeDiskspaceRate{ float totalSpace; float totalFreeSpace=0.f; NSError *error = nil; NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSDictionary *dictionary