在我的应用中,我将图片上传到服务器。我正在使用这种方法https://stackoverflow.com/a/22301164/1551588。它工作正常,但我想为此方法添加进度条。有可能的? sendAsynchronousRequest
能做什么?谢谢你的回复。
答案 0 :(得分:1)
似乎无法在iOS中获得进度值。
但是在SO上我找到了一个非常好的解决方法,基本上是作弊,但在视觉上,他做的工作。
您自己填写一个进度指示器,最后确保它已满。
原始回答UIWebView with Progress Bar
带有改进的代码:
#pragma mark - Progress View
Boolean finish = false;
NSTimer *myTimer;
-(void)startProgressView{
_progressView.hidden = false;
_progressView.progress = 0;
finish = false;
//0.01667 is roughly 1/60, so it will update at 60 FPS
myTimer = [NSTimer scheduledTimerWithTimeInterval:0.01667 target:self selector:@selector(timerCallback) userInfo:nil repeats:YES];
}
-(void)stopProgressView {
finish = true;
_progressView.hidden = true;
}
-(void)timerCallback {
if (finish) {
if (_progressView.progress >= 1) {
_progressView.hidden = true;
[myTimer invalidate];
}
else {
_progressView.progress += 0.1;
}
}
else {
_progressView.progress += 0.00125;
if (_progressView.progress >= 0.95) {
_progressView.progress = 0.95;
}
}
//NSLog(@"p %f",_progressView.progress);
}
以下是如何使用它:
首先打电话(显然)你需要的地方
[self startProgressView];
然后在代理
中#pragma mark - NSURLConnection Delegate Methods
- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
NSLog(@"Loaded");
[self stopProgressView];
}
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error {
NSLog(@"Error %@", [error description]);
[self stopProgressView];
}
```