2015-05-22 6 views
0

Добрый день!SDWebImage + MBProgressHUD

Я использую эти две библиотеки при загрузке полноразмерных изображений из Интернета.

КОД:

-(void)viewDidAppear:(BOOL)animated 
{ 
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0),^
    { 
     [imageView sd_setImageWithURL:[NSURL URLWithString:[NSString stringWithFormat:@"%@", img]] placeholderImage:[UIImage imageNamed:@"stub_image.jpg"]]; 

    dispatch_async(dispatch_get_main_queue(),^
    { 
     [MBProgressHUD hideHUDForView:self.view animated:YES]; 
    }); 
}); 

Оказывается, что полная картина размера загружена позже, чем скрывает индикатор (показано заполнитель изображения)

Что я делаю не так?

+1

Я бы предложил использовать '- (Недействительными) sd_setImageWithURL: (NSURL *) URL placeholderImage: (UIImage *) заполнителем завершено: (SDWebImageCompletionBlock) completedBlock;' вместо этого, и наложите на 'finishedBlock' скрытие индикатора выполнения. – Larme

ответ

1

На вашем коде, линия

[MBProgressHUD hideHUDForView:self.view animated:YES]; 

выполняется до завершения загрузки.

Метод sd_setImageWithURL:placeholderImage: является неблокирующая нить.

Вы должны использовать completionBlock из sd_setImageWithURL:placeholderImage:completed: и добавить свой метод укрытия.

Использование блоков

С блоками, вы можете получать уведомления о ходе изображения загрузки и всякий раз, когда поиск изображения завершен с успехом или нет:

Примечание: ни вашего успеха или блок отказов будет вызываться, если ваш запрос на изображение отменяется до завершения.

Попробуйте этот код:

-(void)viewDidAppear:(BOOL)animated 
{ 
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0),^{ 
       [imageView sd_setImageWithURL:[NSURL URLWithString:[NSString stringWithFormat:@"%@", img]] placeholderImage:[UIImage imageNamed:@"stub_image.jpg"] 
          completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL) 
        { 
         dispatch_async(dispatch_get_main_queue(),^{ 
          [MBProgressHUD hideHUDForView:self.view animated:YES]; 
         }); 
     }]; 
    }); 
} 
+0

То же самое после кода изменения ... Но я нашел решение! Во время загрузки изображение показывает квадрат с квадратным цветным разрешением. Thankx anyway –