zoukankan      html  css  js  c++  java
  • ASIProgressDelegate:实现定制的上传进度显示

    在ASIHTTPRequest中,要显示进度跟踪是很简单的。只需要使用一个UIProgressView控件,并简单地将它设置为request的setUploadProgressDelegate/setDownloadProgressDelegate属性,以即

    把showAccurateProgress设为YES就可以了。

    但有时候我们需要为用户定制自己的UIProgressView显示。比如在进度条上方加一个Label显示当前进度(或者实际的上传字节数):

    这就需要用到ASIProgressDelegate协议了。对于上传进度而言,需要注意其中的3个方法(还有两个是下载进度相关的),这些方法都是可选的(不需要全部实现):

    -(void)setProgress:(float)newProgress;

    -(void)request:(ASIHTTPRequest *)request didSendBytes:(long long)bytes;

    -(void)request:(ASIHTTPRequest *)request incrementUploadSizeBy:(longlong)newLength;

    @end

    ASIProgressDelegate协议使用起来很简单。比如上面的例子,只用到了setProgress方法。

    首先,在View Controller 类中声明协议的实现:

    @interfaceUploadVC : UIViewController

    <ASIProgressDelegate>

    然后将View Controller类设置为request的uploadProgressDelegate属性:

    request =[[ASIFormDataRequest requestWithURL:url]retain];

    ⋯⋯

    [requestsetUploadProgressDelegate:self];

    别忘记showAccurateProgress也要设置为YES (默认为NO,则只显示0%和100%):

    request.showAccurateProgress=YES;//

    最后是setProgress方法的实现:

    -(void)setProgress:(float)newProgress{

        [self.pvsetProgress:newProgress];

       self.lbPercent.text=[NSString stringWithFormat:@"%0.f%%",newProgress*100];

    }

    如果你不想显示百分比而显示精确的字节数,则必须使用另外两个方法之一:

    -(void)request:(ASIHTTPRequest *)request didSendBytes:(long long)bytes;

    -(void)request:(ASIHTTPRequest *)request incrementUploadSizeBy:(longlong)newLength;

    二者区别在于第2个参数的不同,前者的bytes参数是每次发送的字节数(不累加),后者的newLength参数是每次发送时已发送的字节书(累加)。需要注意的是这个参数很大,为longlong类型,转换为字符串时可以用%lld格式化字符串:

    -(void)request:(ASIHTTPRequest*)request incrementUploadSizeBy:(long long)newLength{

        NSLog(@"totalupload:%lld",newLength);

    }

    另外,当缓存清空时,newLength会是个负数。比如上传完成后,缓存会被清空,此时newLength输出为负数:

    totalupload:312791

    totalupload:-131072

  • 相关阅读:
    1058 A+B in Hogwarts (20)
    1036. Boys vs Girls (25)
    1035 Password (20)
    1027 Colors in Mars (20)
    1009. Product of Polynomials (25)
    1006. Sign In and Sign Out
    1005 Spell It Right (20)
    1046 Shortest Distance (20)
    ViewPager页面滑动,滑动到最后一页,再往后滑动则执行一个事件
    IIS7.0上传文件限制的解决方法
  • 原文地址:https://www.cnblogs.com/zhwl/p/2591560.html
Copyright © 2011-2022 走看看