IOS:来自 Json 的 LazyLoad 图像

Posted

技术标签:

【中文标题】IOS:来自 Json 的 LazyLoad 图像【英文标题】:IOS: LazyLoad image From Json 【发布时间】:2012-10-11 03:32:05 【问题描述】:

我是这种编程语言的新手...我尝试从一些服务器使用 json,成功后使用所有信息,现在我无法在 tableviewcell 中显示“lazyload”图像

我使用AsyncImageView 来实现它,这里是我的代码

-(UITableViewCell *)tableView :(UITableView *) tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath


    NetraCell *cell =(NetraCell *)[tableView dequeueReusableCellWithIdentifier:@"cell"];
    if (cell==nil)
        cell=[[NetraCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"cell"];

        //common settings
        cell.imageView.contentMode = UIViewContentModeScaleAspectFill;
        cell.imageView.frame = CGRectMake(0.0f, 0.0f, 44.0f, 44.0f);
        cell.imageView.clipsToBounds = YES;

        ///get url image from url
        //NSString *path=[[[Deals_array objectAtIndex:indexPath.row] objectForKey:@"image"]objectForKey:@"thumbnail"];

        ////convert image into NSDATA
    //  NSData* imageData = [NSData dataWithContentsOfURL: [NSURL URLWithString: path]];
        ////read NSData Image
    //  UIImage* image = [UIImage imageWithData: imageData];
        //////set rounded imager with NetraImage

    //  image=[ImageManipulator makeRoundCornerImage:image : 30 : 30];

        ////show image into UItableviewCell
    //  cell.imageView.image=image;

    
    else
        //cancel loading previous image for cell
        [[AsyncImageLoader sharedLoader] cancelLoadingImagesForTarget:cell.imageView];
    
    cell.imageView.image = [UIImage imageNamed:@"Placeholder.png"];
    cell.imageView.imageURL = [[[imageURLs objectAtIndex:indexPath.row]objectForKey:@"image"]objectForKey:@"thumbnail"];

    NSString *price=[[[somearray objectAtIndex:indexPath.row] objectForKey:@"price"]objectForKey:@"formatted"];
    ///call image from JSOn


    ///draw to tableviewcell
    if(price!=NULL)
        cell.detailTextLabel.text= [[[Deals_array objectAtIndex:indexPath.row] objectForKey:@"price"]objectForKey:@"formatted"]; //1 draw the price
        //[cell release]
    
    else
    cell.detailTextLabel.text= @"Call";

    
    //draw headline
    cell.textLabel.text=[[Deals_array objectAtIndex:indexPath.row] objectForKey:@"headline"];
    ///draw image


         [UIApplication sharedApplication].networkActivityIndicatorVisible=NO;
    return  cell;

这一行是我的形象之路

//NSString *path=[[[Deals_array objectAtIndex:indexPath.row] objectForKey:@"image"]objectForKey:@"thumbnail"];

这是将图片分配到uitableviewcell的默认方法

cell.imageView.imageURL = [imageURLs objectAtIndex:indexPath.row];

但是当我尝试这种方法时

cell.imageView.imageURL = [[[imageURLs objectAtIndex:indexPath.row]objectForKey:@"image"]objectForKey:@"thumbnail"];

它的错误,主要问题是

    为什么会出错?那是我的远程图像路径错误吗?或者我的方法不对

需要你的帮助 :) 非常感谢

【问题讨论】:

在分配给 imageView 之前记录 url,然后在你的 PC 浏览器中检查它是否有任何图像 【参考方案1】:

检查您是否在代码中为单元格图像 url 分配了适当的 imageurl,[[[imageURLs objectAtIndex:indexPath.row]objectForKey:@"image"]objectForKey:@"thumbnail"],然后通过这个,它可能对你有帮助 lazy loading of images in UITableView cell

【讨论】:

以上是关于IOS:来自 Json 的 LazyLoad 图像的主要内容,如果未能解决你的问题,请参考以下文章

来自 json 文件的图像未显示在网站上

javascript 函数debounce来自react-lazyload

从 ios 中的 Url 获取多个图像

lazy:对于Lazyload图像gem来说,它会破坏Ruby on Rails 5的图像

在 JSON 中解析 <img src> 标签 - iOS

如何在 iOS 的 iCarousel 中显示图像全屏?