我正在尝试加快在我的应用程序中绘制地图图块的速度,因为 Time Profiler 说这是应用程序运行速度最慢的地方。项目文件在这里,Time Profiler 所说的最慢的部分是用于平铺覆盖的 drawMapRect:zoomScale:inContext 方法的这一部分——
for (ImageTile *tile in tilesInRect) {
CGRect rect = [self rectForMapRect:tile.frame];
NSString *path = tile.imagePath;
if (path) {
UIImage *image = [UIImage imageWithContentsOfFile:path];
CGContextSaveGState(context);
CGContextTranslateCTM(context, CGRectGetMinX(rect), CGRectGetMinY(rect));
float scale = (overZoom/zoomScale);
CGContextScaleCTM(context, scale, scale);
CGContextTranslateCTM(context, 0, image.size.height);
CGContextScaleCTM(context, 1, -1);
CGContextDrawImage(context, CGRectMake(0, 0, image.size.width, image.size.height), [image CGImage]);
CGContextRestoreGState(context);
}
}
我猜想使用任何 UIImages 并缩放它们是最减慢速度的原因。有什么方法可以加快速度,或者将绘图移动到后台线程?(尽管drawMapRect无论如何都不会发生在后台线程中,因为它不会在每次应用程序加载图块时停止地图滚动)