UIImage imageWithData занимает несколько секунд, чтобы появиться - PullRequest
1 голос
/ 08 января 2012

У меня есть типичное приложение в стиле «развертки» с DetailViewController, которое включает в себя UIImageView, UIWebView и несколько UILabel с.Проблема в том, что загрузка imageView занимает больше времени!Он белый (цвет фона) в течение нескольких секунд, а затем, наконец, загружается через 3-5 секунд (вероятно, количество времени, необходимое для загрузки).

Код:

- (void)loadSummary {
    self.dogFood = [[IKFetcher sharedFetcher] fetchDogFoodInfoForId:self.dogFoodId];
    self.dogFoodAnalysisArray = [[IKFetcher sharedFetcher] fetchDogFoodAnalysisArrayForId:self.dogFoodId];
    self.dogFoodRating = [[IKFetcher sharedFetcher] getAvgDogFoodRatingForId:self.dogFoodId];
    if ([self.dogFood.dfImageUrl length] != 0) {
        self.dogFoodImage.image = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:self.dogFood.dfImageUrl]]];
    }
}

, а вызов loadSummary заключен в вызов dispatch_async.

Что можно сделать, чтобы приложение дождалось загрузки изображения?

Ответы [ 2 ]

8 голосов
/ 08 января 2012

Проблема в том, что вы даете dataWithContentsOfURL удаленный URL.Требуется время, чтобы загрузить его, плюс он может никогда не прийти.Это рискованно.Вместо этого покажите заполнитель и используйте NSURLConnection для загрузки реального изображения в фоновом режиме;он вызовет делегата, когда он получит изображение, и теперь вы можете отобразить его мгновенно.

1 голос
/ 24 марта 2013

Я бы предложил

SDWebImage , поэтому вам не нужно реализовывать его самостоятельно.

...