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