上传带有进度的异步图片

Upload asynchronous image with progress

在我的应用程序中,我正在将图像上传到服务器。我正在使用这种方法。它工作正常,但我想在此方法中添加进度条。有可能的? sendAsynchronousRequest 可以吗?感谢您的回复。

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];
}

```