从tableVeiw Cell中的URL显示缩略图图像

时间:2015-05-31 05:55:00

标签: ios uitableview cell custom-cell

我想在每个tableView单元格中显示来自URL的缩略图。它工作正常。 但问题是当我滚动导致一些GUI延迟。我知道这是因为每次滚动或每次创建新单元格时都会出现URL请求。 有没有更好的方法来做到这一点,这不会导致任何UI延迟。

我使用以下代码:

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    var cell: WelcomeCell = WelcomeCell();
    cell = self.tblViewStudent.dequeueReusableCellWithIdentifier("WelcomeCell") as WelcomeCell

    if news != nil {
    if news.count > 0 {
        var objNews = News();
        objNews = news.objectAtIndex(indexPath.row) as News;

        cell.lblNewsSubject.text = objNews.subject;
        cell.lblNewsTime.text = objNews.created_at;
        cell.lblNewsSummery.text = objNews.summery;

        let url = NSURL(string: objNews.thumbnailURL)
        let data = NSData(contentsOfURL: url!) 
        cell.viewImageThumbnail.image = UIImage(data: data!);
    } else {
        // do nothing
    }

    }
    return cell;

}

提前致谢。

2 个答案:

答案 0 :(得分:0)

在您的课程首次加载时,将缩略图图片保存在ArrayMutable Array的网址中,然后将数组中的图片放入cell.viewImageThumbnail.image

答案 1 :(得分:0)

只需使用SDWebImage

要在表格视图单元格中显示图像,请执行以下操作:

#import <SDWebImage/UIImageView+WebCache.h>

...

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *MyIdentifier = @"MyIdentifier";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:MyIdentifier];

    if (cell == nil)
    {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault
                                   reuseIdentifier:MyIdentifier] autorelease];
    }

    // Here we use the new provided sd_setImageWithURL: method to load the web image
    [cell.imageView sd_setImageWithURL:[NSURL URLWithString:@"http://www.domain.com/path/to/image.jpg"]
                  placeholderImage:[UIImage imageNamed:@"placeholder.png"]];

    cell.textLabel.text = @"My Text";
    return cell;
}