ASIProgressDelegate:实现定制的上传进度显示
来源:互联网 发布:图片缩放软件 编辑:程序博客网 时间:2024/05/18 17:26
在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
- ASIProgressDelegate:实现定制的上传进度显示
- ASIProgressDelegate实现定制的上传进度条
- Java动态显示文件上传进度的简单实现
- Java动态显示文件上传进度的简单实现
- Java动态显示文件上传进度的简单实现
- iOS用AFNetWorking实现头像的上传和进度显示
- 自定义View实现图片上传进度显示
- Retrofit图片上传及进度的显示
- 安卓中带进度显示的图片上传
- PHP 显示上传进度
- fileupload上传显示进度
- Java动态显示文件上传进度的简单实现 - java2000.net的专栏 - CSDNBlog
- Struts2和common的fileupload实现文件上传并显示实时进度
- 一个简单的ajax上传 上传进度显示
- PHP文件上传进度的实现原理
- 上传进度实现的2中方式
- Android带进度反馈的上传实现
- 多文件上传进度的实现-springmvc
- JS控制弹出窗口
- vs2010 中创建扩展dll
- 帧中继
- c++函数返回引用
- css图像样式
- ASIProgressDelegate:实现定制的上传进度显示
- 越狱兔主角之基里连科 (キレネンコ/Кирененко)
- Android SDK更新以及ADT更新出现问题的解决办法
- Android随记------GalleryView禁止选中项目向中间滑动
- C# AOP微型框架实现
- 用.Net做选项卡特效
- Rational Rose 2003 逆向工程转换C++ / VC++ 6.0源代码成UML类图
- 擅自使用 livepolyii_jni 的框架却没有付费的形为。【livepolyii】
- linux内核研究-2-系统调用