Grand Central Dispatchを使用しUIView
て、を画像としてキャプチャするタスクをキューに入れています。キューで実行されている画像キャプチャにかなりの時間がかかることを除いて、これですべてが正常に機能しています。
これをスピードアップしたり、私のテクニックを向上させる方法はありますか?これは、画像をキャプチャして拡大縮小するためのコードですUIImageView
。画像は、表示用にの画像に設定されます。
(void)captureScrollViewImageForLayoverView
{
// capture big map image
CGSize size = mainView.bounds.size;
UIGraphicsBeginImageContext(size);
[[mainView layer] renderInContext:UIGraphicsGetCurrentContext()];
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
// scale map
size = myLocationOverlay.bounds.size;
UIGraphicsBeginImageContext(size);
[newImage drawInRect:CGRectMake(0,0,size.width,size.height)];
UIImage *scaledImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
myLocationOverlay.imageMap.image = scaledImage;
}
そして、これがタスクをキューに入れているコードです。
...
mapImageDrawQueue = dispatch_queue_create("mapImage.drawQueue", NULL);
(void)captureScrollViewImageForLayoverViewWrapper {
// multithreaded approach to draw map
dispatch_async(mapImageDrawQueue, ^{ [self captureScrollViewImageForLayoverView]; });
}