zoukankan      html  css  js  c++  java
  • 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.显示

    模拟器显示:

    打印查看:

  • 相关阅读:
    Proj THUDBFuzz Paper Reading: The Art, Science, and Engineering of Fuzzing: A Survey
    Proj THUDBFuzz Paper Reading: A systematic review of fuzzing based on machine learning techniques
    9.3 付费代理的使用
    11.1 Charles 的使用
    第十一章 APP 的爬取
    10.2 Cookies 池的搭建
    10.1 模拟登录并爬取 GitHub
    11.5 Appium 爬取微信朋友圈
    11.4 Appium 的基本使用
    11.3 mitmdump 爬取 “得到” App 电子书信息
  • 原文地址:https://www.cnblogs.com/jx66/p/5627652.html
Copyright © 2011-2022 走看看