从解析

时间:2015-11-21 23:56:31

标签: ios objective-c xcode parse-platform uicollectionview

我在解析时有一些图像。 (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];
        }}];

}

1 个答案:

答案 0 :(得分:1)

尝试使用PFImageView而不是UIImageView。

if (object) {
     cell.image.file = [object objectForKey:@"image"];
     if ([cell.image.file isDataAvailable]) {
         [cell.image loadInBackground];
     }
}

在单元格中下载图像时,请记得在prepareForReuse中取消当前下载,否则在快速滚动时会看到一些重复。

我相信PFImageView会为你处理这个问题。