Я пытаюсь использовать MBProgressHUD для отображения анимации загрузки, в то время как приложение загружает больше json-данных. Вот код, который я использую для вызова функции с включенным MBProgressHUD.Показывать анимацию загрузки при потянув json с afnetworking
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {
float bottomEdge = scrollView.contentOffset.y + scrollView.frame.size.height;
if (bottomEdge >= scrollView.contentSize.height) {
pageCounter++;
[MBProgressHUD showHUDAddedTo:self.view animated:YES];
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, 0.01 * NSEC_PER_SEC);
dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
// Do something...
[self loadAdditionalJson];
[MBProgressHUD hideHUDForView:self.view animated:YES];
});
}
}
А вот функция, которая называется:
-(void)loadAdditionalJson
{
NSLog(@"%i", pageCounter);
NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:
@"http://ragetracks.com/?json=1&count=50&page=%i&custom_fields=PostThumb&include=title,content,attachments",
pageCounter]];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
AFJSONRequestOperation *operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) {
for (int x = 0; x < 50; x++) {
//NSLog(@"%i", pageCounter*50 -50 + x);
if ([JSON[@"posts"][x][@"attachments"] count] == 0)
{
NSString *temp = [NSURL URLWithString:@"nothing"];
[imageUrls addObject:temp];
}
else
{
NSString *temp1;
//temp1 = [NSString stringWithFormat:@"%@", JSON[@"posts"][x][@"id"]];
//NSLog(temp1);
NSURL *imageUrl = [NSURL URLWithString:
[NSString stringWithFormat:@"%@",
JSON[@"posts"][x][@"attachments"][0][@"images"][@"medium"][@"url"]]];
NSString *title = [NSString stringWithFormat:@"%@", JSON[@"posts"][x][@"title"]];
NSString *label = [NSString stringWithFormat:@"%@", JSON[@"posts"][x][@"content"]];
NSScanner *scanner = [NSScanner scannerWithString:label];
[scanner scanUpToString:@"%2Ftracks%2F" intoString:nil];
[scanner scanString:@"%2Ftracks%2F" intoString:nil];
[scanner scanUpToString:@"&" intoString:&temp1];
NSURL *temp2 = [NSURL URLWithString:[NSString stringWithFormat:@"https://api.soundcloud.com/tracks/%@.json?client_id=7622aa84a50c9f7609e2f7ed8bc85e81", temp1]];
if (imageUrl) {
[imageUrls addObject:imageUrl];
}
else{
NSString *temp = [NSURL URLWithString:@"nothing"];
[imageUrls addObject:temp];
}
[titles addObject:title];
[contentUrls addObject:temp2];
}
}
[self.collectionView reloadData];
} failure:nil];
[operation start];
}
Загрузка анимации только появляется и исчезает слишком быстро и не отражает, как долго он принимает для приложение для загрузки новой информации. Я понимаю, что это имеет какое-то отношение к основной теме, но я точно не знаю, что делать. Я попытался отключить AFNetworkActivityIndicatorManager
, но это нисколько не влияет. Спящая система задерживает его, но при этом все еще не отражает время загрузки, так как после сна он возвращается и заканчивает загрузку.
Я думал, что блок успеха был выше этого, спасибо – user1933131