2016-11-01 2 views
0

이것은 매우 불쌍한 프로그래밍 방법처럼 보일 것입니다. 그러나 다른 루틴을 구현하는 방법을 모르겠습니다.UICollectionView가 느리게 처음 스크롤하면서 이미지를 처리합니다.

저는 각 셀이 다른 이미지를 표시하는 3 x 20 셀을 관리하는 UICollectionView을 보유하고 있습니다. 원래 내 맞춤 UICollectionViewCell 하위 클래스 (StoneCell)의 기본값은 이미지 StoneLocked.png입니다. 그래서 모든 60 세포가 그 이미지로 시작합니다. 그러나 결국에는 모든 셀이 다른 이미지의 "돌"을 표시합니다. 각기 다른 이미지를 60 개의 셀 중 하나에로드하여 그 모습을 시험해보고 싶었습니다. 여기에 내가 쓴 것이있다.

static NSString *cellIdentifier = @"stoneCell"; 

-(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView 
      cellForItemAtIndexPath:(NSIndexPath *)indexPath { 

    //UICollectionViewCell* regular; 
    NSMutableArray *sA = [self.stoneArray objectAtIndex:indexPath.section]; 
    NSNumber *stoneNum = [sA objectAtIndex:indexPath.row]; 

    StoneCell *cell = (StoneCell *)[collectionView dequeueReusableCellWithReuseIdentifier:cellIdentifier forIndexPath:indexPath]; 

    if ([stoneNum integerValue] == 0) { 
     [cell.stone setBackgroundImage:[UIImage imageNamed:@"Banana.png"] 
          forState:UIControlStateNormal]; 
     [cell.stone setTitle:[NSString stringWithFormat:@""] forState:UIControlStateNormal]; 
    } else if ([stoneNum integerValue] == 1) { 
     [cell.stone setBackgroundImage:[UIImage imageNamed:@"Flamingo.png"] 
          forState:UIControlStateNormal]; 
     [cell.stone setTitle:[NSString stringWithFormat:@""] forState:UIControlStateNormal]; 
    } else if { 
     // IMAGE NOW 58 MORE if-else STATEMENTS LIKE THE ABOVE 2. 
    } 

    cell.stone.layer.cornerRadius = 6; 
    cell.stone.layer.masksToBounds = YES; 
    [cell addSubview:cell.stone]; 
    cell.layer.shouldRasterize = YES; 
    cell.layer.rasterizationScale = [UIScreen mainScreen].scale; 
    return cell; 
} 

처음에는보기를 스크롤 할 때 모든 이미지가로드되어 올바르게 표시됩니다. 그러나 스크롤이 고르지 않습니다.

화면의 맨 아래에 도달 한 다음보기에서 자유롭게 위아래로 스크롤하면 모든 것이 잘되고 제대로 작동합니다.

어떻게하면 갈라진 틈이 없는가, choppiness가 존재하지 않도록 할 수 있습니까?

답변

0

Nevermind, 나는 viewDidLoad 무대에서 미리 이미지를 게으 르기로 결정했습니다. 그 이미지들을 배열에 저장하고 필요할 때 색인을 사용했습니다. 부드럽고 선명한 스크롤 응답.

+1

이미지로드를 백그라운드 대기열로 이동해야합니다. 그렇지 않으면 앱이 여전히 사용자에게 뒤떨어져 보일 수 있습니다. – kabiroberai