上传带有进度的异步图片
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];
}
```
在我的应用程序中,我正在将图像上传到服务器。我正在使用这种方法。它工作正常,但我想在此方法中添加进度条。有可能的? 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];
}
```