У меня есть приложение, которое загружает изображение с сервера. Я хотел бы показать прогресс пользователю. Я читал о UIProgressView в яблочных документах и читал много ответов на этом сайте, но я не могу заставить его работать. Вот мой код В моей viewDidLoad
у меня естьUIProgressView не отображается
_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, но он не показывает прогресс и не скрывает, после того, как изображение будет сделано в процессе загрузки.
Почему вы отправляете товар в основную очередь? Ответ делегата вызывается в основном потоке, поэтому вам не нужно этого делать. Кроме того, прогресс находится в масштабе от 0 до 1.0, поэтому я не знаю, почему вы умножаетесь на 100. Кроме того, вы перетаскиваете его на раскадровку? Тогда вам не нужно выделять и инициализировать. – AdamG
Проверьте, является ли объект progressView нулевым или нет. –
Вы сделали [self.view bringSubviewToFront: _profileProgressView]; ?? @Pandey – Learner