我在解析时有一些图像。 (5个对象每个都有一个PFFile,每个图像大约800x800 400Kb)。 当我第一次在我的设备(iphone 5S)上运行应用程序时,图像加载,一切正常。 当我向下滚动加载所有。然后我再次sc起来并加载之前的图像(至少一次并通过解析缓存) UICollectionView有点闪烁(不是太慢但很明显,就像用户界面试图跟上阻力一样)。 我有什么我想念的吗?
*编辑1: 我非常感谢您对我的代码的任何帮助或改进
调用CustomCell:
static NSString *cellIdentifier = @"cellImage";
cellTypeImage1 *cell = (cellTypeImage1 *)[collectionView dequeueReusableCellWithReuseIdentifier:cellIdentifier forIndexPath:indexPath];
[cell configureWithObject:[self.collectionView objectAtIndex:indexPath]];
return cell;
在自定义单元格内
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
self.fullResImage = [[UIImageView alloc] init];
self.fullResImage.frame = CGRectZero;
[self addSubview:self.fullResImage];
}
self.backgroundColor = [color whiteColor];
return self;
}
-(void)layoutSubviews{
[super layoutSubviews];
self.fullResImage.frame = CGRectMake(0, 50, self.frame.size.width, self.frame.size.width);
}
- (void)prepareForReuse {
[super prepareForReuse];
self.fullResImage.image = nil;
}
-(void)configureWithObject:(PFObject*)object{
[object[@"image"] getDataInBackgroundWithBlock:^(NSData *data, NSError*error){
if (!error) {
/*THE PROBLEM IS HERE*/
self.fullResImage.image = [UIImage imageWithData:data];
/*When i replace it by a local image [UIImage imageNamed:@"LARGE IMAGE ABOUT 1.2MB"] everything runs smoothly*/
}else{
[ParseErrorHandlingController handleParseError:error];
}}];
}
答案 0 :(得分:1)
尝试使用PFImageView而不是UIImageView。
if (object) {
cell.image.file = [object objectForKey:@"image"];
if ([cell.image.file isDataAvailable]) {
[cell.image loadInBackground];
}
}
在单元格中下载图像时,请记得在prepareForReuse中取消当前下载,否则在快速滚动时会看到一些重复。
我相信PFImageView会为你处理这个问题。