如何使用AFNetworking AFHTTPRequestOperationManager显示ProgressBar

当我从url下载JSON时,我正在尝试显示进度条。 JSON正在正确下载,但我不确定如何显示进度条。 我尝试过使用UIProgressView但它没有在屏幕上显示。 任何建议,将不胜感激。

 CGFloat width = [UIScreen mainScreen].bounds.size.width; CGFloat height = [UIScreen mainScreen].bounds.size.height; CGRect rect = CGRectMake(width/2, height/2, width/5, height/5); UIProgressView *myProgressView = [[UIProgressView alloc]initWithFrame:rect]; myProgressView.progressViewStyle = UIProgressViewStyleBar; [self.view addSubview:myProgressView]; AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; [manager GET:@"https:urlWithJson" parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) { [operation setDownloadProgressBlock:^(NSUInteger bytesRead, long long totalBytesRead, long long totalBytesExpectedToRead) { myProgressView.progress = (float)totalBytesRead / totalBytesExpectedToRead; }]; [operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) { NSLog(@"operation Completed"); } failure:^(AFHTTPRequestOperation *operation, NSError *error) { NSLog(@"ERROR"); }]; [operation start]; } failure:^(AFHTTPRequestOperation *operation, NSError *error) { NSLog(@"timeout Error: %@", error); }]; 

你在成功块里面设置了download-progress-block,这有点太晚了;)

尝试这个:

 AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; AFHTTPRequestOperation *operation = [manager GET:@"https:urlWithJson" parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) { NSLog(@"Complete"); } failure:^(AFHTTPRequestOperation *operation, NSError *error) { NSLog(@"Error: %@", error); }]; [operation setDownloadProgressBlock:^(NSUInteger bytesRead, long long totalBytesRead, long long totalBytesExpectedToRead) { myProgressView.progress = (float)totalBytesRead / totalBytesExpectedToRead; }]; 

Swift的简单解决方案:

 let progress: UIProgressView? //for example, reference to IBOutlet let manager = AFHTTPRequestOperationManager() let operation = manager.POST(query, parameters: parameters, constructingBodyWithBlock: { multipartData in //do sth with your multipartData }, success: { operation, response in //success }) { operation, error in //failure } progress?.setProgressWithUploadProgressOfOperation(operation!, animated: true) 

你什么都不做。 这足以显示您的视图的进度。