2015-11-21 40 views
1

我有一些解析圖像。 (5個物體各有一個PFFile,每個物體約800x800 400Kb)。 當我第一次在我的設備上運行應用程序(iphone 5S)時,圖像加載,並且一切正常。 當我向下滾動以加載所有。然後,我再次升級,並加載圖像較早(至少一次,並通過解析緩存) UICollectionView閃爍一點(不是太慢,但明顯,像UI試圖跟上拖動)。 我有什麼我失蹤?Buggy 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

嘗試內幕使用PFImageView而不是UIImageView。

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

當下載一個單元格內的圖像,記得要取消prepareForReuse當前的下載,否則,你會看到一些重複的通過快速滾動時。

我相信PFImageView會爲您處理這個問題。

+0

謝謝你的伎倆。 我沒有使用PFImageView,因爲Xcode沒有識別它。但是當你建議我挖掘並發現我必須包含#import 。現在一切正常 – user3501717