我有一个从服务器下载图片的应用程序。我想向用户展示进度。我已经阅读了关于苹果文档的 UIProgressView 并阅读了这个网站上的许多答案,但我无法让它工作。这是我的代码在我viewDidLoad
有
_profileProgressView.hidden= YES;
_profileProgressView.progress = 0.0;
在我 - (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
显示 UIProgressView 然后得到图像的预期大小。
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response {
self.profileProgressView.hidden= NO;
[self.remote_response setLength:0];
received = 0;
self.filesize = [NSNumber numberWithLongLong:[response expectedContentLength]];
NSLog(@"Content Length::%@", self.filesize);
}
在我的- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)d
中,我计算下载图像的百分比,然后更新 UIProgressView 的进度并记录下载进度。
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)d {
[self.remote_response appendData:d];
NSNumber *resourceLength = [NSNumber numberWithUnsignedInteger:[self.remote_response length]];
dispatch_async( dispatch_get_main_queue(), ^ {
float progress = (_profileProgressView.progress + ([self.filesize floatValue]/[resourceLength floatValue])*100);
[self.profileProgressView setProgress:progress animated:YES];
NSLog(@"Downloading %.0f%% complete", _profileProgressView.progress);
});
}
当我运行这段代码
UIProgressView 永远不会出现
我得到的日志是
Downloading 0% complete
. 我希望得到正在下载的图像的日志。
另外我认为我应该alloc
和init
UIProgressView 中的viewDidDownload
,当我这样做时,我得到 UIProgressView 但它不显示进度并且在图像下载完成后它不会隐藏。