我試圖加快在我的應用程序中繪製地圖圖塊的速度,因爲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