我试图加快在我的应用程序中绘制地图图块的速度,因为Time Profiler说这是应用程序运行速度最慢的地方。该项目文件是here,以及一部分时间探查说是最慢的是drawMapRect的这一部分:zoomScale:为overlay--在覆盖图中绘制更快的地图图块
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和缩放瓷砖inContext的方法他们正在减慢最多的东西。有什么办法可以加快速度,或将绘图移动到后台线程? (尽管无论如何都不会在后台线程中绘制MapRect,因为它不会停止每次应用程序加载图块时的地图滚动)
感谢TheStreaker。这回答了我能理解的最好的问题。我会尝试使用“imageNamed:”方法,但最终我只需要优化代码的其他部分以弥补绘制地图图块花费的时间。到目前为止,我已经减少了其他方法花费的时间,并且在我的手机上测试应用程序时似乎有所帮助。 – guthook