2013-07-04 159 views
1

我正在使用UI集合视图以垂直滚动格式显示包含图像及其关联数据(如日期,名称)的单元格。出现视图时从服务器获取图像数据。当单元出现时,获取的数据将被转换为UIImage。iOS集合视图滚动延迟

问题是滚动是laggy。每当一个新的单元即将出现时,滚动会挂起一点点。有没有办法解决这个问题?我正考虑在后台线程中开始将NSData转换为UIImage以防止延迟。不知道这是否正确。

+0

使用带占位符的SDWebImage – stack

回答

1

由于堆说,你应该异步加载图像,并有精彩UIImageView类别,使这很容易做到,即类别中SDWebImageAFNetworking。这些UIImageView类别不仅可以异步加载图像,还可以缓存,必要时取消网络操作等。如果您自己正确执行此操作(捕获所有列举的所有功能),它将花费大量代码,但如果它真的很简单你使用这些类别之一。

例如,如果使用SDWebImage,您可以:

#import "UIImageView+WebCache.h" 

然后:

[cell.imageView setImageWithURL:url placeholderImage:[UIImage imageNamed:@"placeholder.png"] completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType) { 
    if (error) 
     NSLog(@"%s: setImageWithURL error: %@", __FUNCTION__, error); 
}]; 

或者,如果使用AFNetworking:

#import "UIImageView+AFNetworking.h" 

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

[cell.imageView setImageWithURLRequest:[NSURLRequest requestWithURL:url] placeholderImage:[UIImage imageNamed:@"placeholder.png"] success:nil failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error) { 
    NSLog(@"%s: setImageWithURLRequest error: %@", __FUNCTION__, error); 
}];