Я искал способ улучшить производительность моего CATiledView. Вид занимает почти весь экран (у меня есть версия для iPad и iPhone). В настоящее время занимает всего 12 секунд, чтобы плитки полностью заполнились (12 секунд на обоих устройствах). Я видел, что другие приложения используют CATiledView, и для заполнения плиток требуется намного меньше времени.улучшение производительности CATiledView
Изображение, которое я использую, составляет 1 7000x5000 JPEG. Я попытался уменьшить изображение doen до 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