2014-12-11 6 views
4

В моем приложении отображается много изображений, поэтому я использую элемент управления страницы для отображения изображений в одном контроллере. Пользователь может видеть все изображения путем прокрутки.setImageWithUrl не показывает изображение с самого начала

Я использую AFNetworking Библиотека, чтобы показать хорошее представление. Я использовал свойство setImageWithUrl

// This is myCode 
NSURL *myUrl = [NSURL URLWithString:@"http://mdb.scicloudsolutions.com:8001/sites/default/files/landscape_design_1.jpg"]; 
[imageView setImageWithUrl:myUrl]; 

это не отображается в первый раз только .. Когда я распечатать URL-адрес и изображения

NSLog(@"Url is .. : %@ image. is : %@",myUrl,imageView.image); 

Ответ: я получающий значение URL-адрес, но не значение изображения. Он показывает изображение с нулевым значением в первый раз.

Как решить?

+0

Для загрузки изображения требуется время, потому что оно загружается с URL-адреса. Поместите образ заполнителя во время загрузки изображения или когда изображение равно нулю. Также поместите этот код в фоновый поток. – Kampai

+0

@ Kampai Спасибо за ваш ответ. В соответствии с вашим ответом я изменил его, отобразив изображение заполнителя, когда мое приложение запускается, и когда я прокручиваю свои страницы, тогда только он отображает исходный URL-адрес. Если не прокручивать страницу, она отображает только изображение заполнителя. Как это решить. – Jyoshna

ответ

0

Здесь вы устанавливаете [imageView setImageWithUrl:myUrl]; Так что для загрузки изображения в ImageView требуется время.

Использование SDWebImage Библиотека для улучшения. Просто Простая загрузка эта библиотека От ссылки и изображения набор вроде как

[imageView sd_setImageWithURL:url 
       placeholderImage:[UIImage imageNamed:@"placeholder.png"]]; 
+0

по умолчанию он занимает placeholderimage, один раз, когда я делал какую-либо операцию на экране, тогда появляется только изображение url. – Jyoshna

+0

@Jyoshna. В первый раз требуется время для загрузки изображения. Затем после него берет прямо из памяти кеша. Также вы можете узнать об этом Проблема. «Https://github.com/rs/SDWebImage» эта ссылка читает «Осторожно». –

0

Используйте следующее решение для этого:

@property (nonatomic, strong) NSMutableData *data 
@property (nonatomic, strong) NSURLConnection *connection; 



NSURLRequest *request = [NSURLRequest requestWithURL:url 
             cachePolicy:NSURLRequestUseProtocolCachePolicy 
            timeoutInterval:60.0]; 

connection = [[NSURLConnection alloc] initWithRequest:request delegate:self]; 

Добавить эти методы делегата к контроллеру вида:

- (void)connection:(NSURLConnection *)connection 
    didReceiveData:(NSData *)incrementalData { 
    if (data==nil) { 
     data = [[NSMutableData alloc] initWithCapacity:2048]; 
    } 
    [data appendData:incrementalData]; 
} 

- (void)connectionDidFinishLoading:(NSURLConnection *)aConnection { 
    connection = nil; 

    UIImage *image = [UIImage imageWithData:data]; 
    // Set above image to your imageView. 

    data = nil; 
} 
0
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ 

    /*============= YOU ARE ON BACK GROUND THREAD ==================*/ 

    UIImageView *yourImageView=[[UIImageView alloc] init]; 
    UIImage *img=[UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:@"pass your url here"]]]; 


    dispatch_async(dispatch_get_main_queue(), ^(void) { 
     /*============= YOU ARE ON MAIN THREAD ==================*/ 
     yourImageView.image=img; 
    }); 
}); 
+0

передать ваш URL в строке Формат –

 Смежные вопросы

  • Нет связанных вопросов^_^