如何将图像从url放置到iPhone中的Imageview

时间:2013-12-11 18:05:25

标签: iphone ios5 ios4

在我的应用程序中,我从url下载图像并在uitableview单元格的uiimageview中显示它。

这里我遇到问题是我正在使用Lazyloading但是在移动设备中它崩溃了,因为缓存内存已满。所以我没有得到任何解决方案来解决这个问题。

如果我以异步方式下载,每当我滚动tableview时,它都会在UItableView中为每个单元格下载,因此需要很长时间才能下载,因为我从服务器获取的图像非常大而且分辨率是非常高,所以需要更多的时间。

请帮助我,我正在尝试,但我没有得到任何解决方案。我是iphone开发的新手。请一些人提出任何建议。我在懒惰加载中使用SdWebImage所以我没有得到任何解决我的问题的方法

感谢和安培;问候 Sravya

3 个答案:

答案 0 :(得分:0)

您必须自己管理您的兑现。 如果您不想做很多事情,请使用AFnetworking Library

使用UIImageView类别:UIImageView Category

[imageViewObject setImageWithURL:YOUR_URL_FORIMAGE_HERE];

我希望这会对你有所帮助并且轻松。

答案 1 :(得分:0)

在将图像缓存/在图像视图上显示之前,您必须调整图像大小。 无论您使用哪种图像格式,当图像在视图中显示时,它都会转换为位图,图像越大,内存占用量就越大。检查代码here以获取一些UIImage调整大小类别,这些类别可以帮助您实现这一目标。

答案 2 :(得分:0)

使用此链接:

https://github.com/nicklockwood/AsyncImageView

下载代码:

  1. 在项目中拖放AsyncImageView.hAsyncImageView.m
  2. 使用UITableView委托方法
  3. 以下是示例代码:

      - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
     {
          return [imageURLs count];
     }
    
     - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
     {
        static NSString *CellIdentifier = @"Cell";
    
        #define IMAGE_VIEW_TAG 99
    
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil)
    {
        //create new cell
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
    
        //add AsyncImageView to cell
        AsyncImageView *imageView = [[AsyncImageView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 44.0f, 44.0f)];
        imageView.contentMode = UIViewContentModeScaleAspectFill;
        imageView.clipsToBounds = YES;
        imageView.tag = IMAGE_VIEW_TAG;
        [cell addSubview:imageView];
        [imageView release];
    
        //common settings
        cell.selectionStyle = UITableViewCellSelectionStyleNone;
        cell.accessoryType = UITableViewCellAccessoryDetailDisclosureButton;
        cell.indentationWidth = 44.0f;
        cell.indentationLevel = 1;
    }
    
    //get image view
    AsyncImageView *imageView = (AsyncImageView *)[cell viewWithTag:IMAGE_VIEW_TAG];
    
    //cancel loading previous image for cell
    [[AsyncImageLoader sharedLoader] cancelLoadingImagesForTarget:imageView];
    
    //load the image
    imageView.imageURL = [imageURLs objectAtIndex:indexPath.row];
    
    //display image path
    cell.textLabel.text = [[[imageURLs objectAtIndex:indexPath.row] path] lastPathComponent];
    
    return cell;
    }
    

    如果你在AsyncImageView的拖放类中遇到任何错误,请点击你的prject-> Build Phases->编译源

    在AsyncImageView.m中写入-fno-objc-arc

    试试吧。希望能帮到你