2010-07-01 6 views
0

저는 CATiledView의 성능을 향상시킬 방법을 찾고있었습니다. 보기는 거의 전체 화면을 차지합니다 (iPad 및 iPhone 버전 있음). 현재 타일이 완전히 채워지는 데 약 12 ​​초가 걸립니다 (두 장치에서 모두 12 초). 나는 다른 응용 프로그램이 CATiledView를 사용하는 것을 보았으며 타일 채우기에 훨씬 적은 시간이 걸렸습니다.CATiledView의 성능 향상

내가 사용한 이미지는 1 7000x5000 JPEG입니다. 나는 이미지를 5500px로 줄이려고 시도했는데 로딩 시간에 변화가 없으므로 다음과 같이 내 코드에 문제가 있다고 믿는다.

업데이트 : 이미지 (절반 이상)와 내가 말할 수있는 차이가 없습니다.

-(void) loadMap{ 

     ... 
     UIImage *tempImage = [UIImage imageWithData:data]; 
     self.image = tempImage; 

     CGRect pageRect = CGRectMake(0, 0, image.size.width, image.size.height); 

     CATiledLayer *tiledLayer = [CATiledLayer layer]; 
     tiledLayer.anchorPoint = CGPointMake(0.0f, 1.0f); 
     tiledLayer.delegate = self; 
     tiledLayer.levelsOfDetail = 6; 
     tiledLayer.levelsOfDetailBias = 0; 
     tiledLayer.bounds = pageRect; 
     tiledLayer.transform = CATransform3DMakeScale(1.0f, -1.0f, 0.3f); 
     CGRect imageRect = CGRectMake(0, 0, image.size.width, image.size.height); 
     myContentView = [[UIView alloc] initWithFrame:imageRect]; 
     [myContentView.layer addSublayer:tiledLayer]; 

     UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:self.chartView.frame]; 
     scrollView.delegate = self; 
     scrollView.contentSize = pageRect.size; 
     scrollView.minimumZoomScale = .2; 
     scrollView.maximumZoomScale = 1; 

     scrollView.clipsToBounds = YES; 
     [scrollView addSubview:myContentView]; 
     [self.chartView addSubview:scrollView]; 
     scrollView.zoomScale = .2; 


} 

    - (void)drawLayer:(CALayer *)layer inContext:(CGContextRef)ctx 
    { 


     CGRect imageRect = CGRectMake (0.0, 0.0, image.size.width, image.size.height); 
     CGContextDrawImage (ctx, imageRect, [image CGImage]); 

    } 
+0

코드를 프로파일 링 했습니까? 또는 디버거를 사용하여 한 줄씩 단계별로 진행하십시오. 나는 * 이미지로드 (첫 번째 코드 줄)가 가장 큰 부분을 차지한다고 생각한다. – Eiko

답변

1

WWDC 비디오 중 하나에서 답변과 샘플 코드를 찾았습니다. 액세스 권한이 있다면 확인해보십시오. 104 내가 믿는 스크롤보기