0

в моем приложении Я загружаю изображение на сервер. Я использую этот метод https://stackoverflow.com/a/22301164/1551588. Он работает нормально, но я хотел бы добавить индикатор прогресса в этот метод. Возможно? sendAsynchronousRequest можно сделать? Спасибо за ответ.Загрузите асинхронное изображение с успехом

+0

вы преобразование изображения в базу 64 строки перед загрузкой? – Logic

ответ

1

Похоже, что невозможно получить значение прогресса в iOS.

Но на этом я нашел довольно обход, который в основном обманывает, но визуально он выполняет эту работу.

Вы заполняете индикатор прогресса, и в конце вы убедитесь, что он заполнен.

оригинальный ответ 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]; 
} 

`` `