I am trying to implement a progress bar for when an image gets downloaded to my app from a server. This is what my relevant code looks like:
NSString *queryStringss = [NSString stringWithFormat:@"%@", uploadURL];
queryStringss = [queryStringss stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]];
_manager = [AFHTTPRequestOperationManager manager];
_manager.responseSerializer=[AFJSONResponseSerializer serializerWithReadingOptions:NSJSONReadingAllowFragments];
NSString *usernameEncoded = marker.title;
NSDictionary *params = @{@"username": usernameEncoded, @"count": [object valueForKey:@"count"]};
progBar.hidden = NO;
[_manager POST:queryStringss parameters:params success:^(AFHTTPRequestOperation * _Nonnull operation, id _Nonnull responseObject) {
[operation setUploadProgressBlock:^(NSUInteger bytesWritten, long long totalBytesWritten, long long totalBytesExpectedToWrite) {
float prog = (totalBytesWritten / (totalBytesExpectedToWrite * 1.0f) * 100);
dispatch_async(dispatch_get_main_queue(), ^(void){
[progBar setProgress:prog];
});
NSLog(@"%f%% Uploaded", (totalBytesWritten / (totalBytesExpectedToWrite * 1.0f) * 100));
}];
NSLog(@"Success: %@ ***** %@", operation.responseString, responseObject);
NSData *decodedData = [[NSData alloc] initWithBase64EncodedString:responseObject[@"image"] options:0];
image.image = [UIImage imageWithData:decodedData scale:300/2448];
dispatch_async(dispatch_get_main_queue(), ^(void){
[image setHidden:NO];
[respondButton setHidden:NO];
[xButton setHidden:NO];
});
}
failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"Error: %@ ***** %@", operation.responseString, error);
}];
Also, in viewDidLoad
, I initialize the progress bar (which is declared in the @implementation
block:
progBar = [[UIProgressView alloc] initWithProgressViewStyle:UIProgressViewStyleBar];
[progBar setFrame:CGRectMake(10, 264, 300, 10)];
[self.view addSubview:progBar];
progBar.hidden = YES;
My code works - I just don't see a progress bar displayed at any point.