setImageWithUrl未在第一时间显示图像

时间:2014-12-11 10:51:59

标签: ios ios6 uiimage afnetworking

我的应用程序显示了大量图像,因此我使用页面控件在单个控制器中显示图像。 用户可以通过滑动查看所有图像。

我正在使用 AFNetworking 库来展示良好的性能。我使用了属性setImageWithUrl

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

它不是第一次出现.. 当我打印网址和图像时

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

响应: 我正在接收网址值但不是图片价值。 它首次显示图像为空。

如何解决?

3 个答案:

答案 0 :(得分:0)

这里设置[imageView setImageWithUrl:myUrl];因此,将图像加载到ImageView需要一些时间。

使用SDWebImage图书馆更好。只需简单从链接下载此库并将图像设置为

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

答案 1 :(得分: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;
}

答案 2 :(得分: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;
    });
});