我正在制作一个放大镜应用程序,允许用户触摸屏幕并移动手指,将会有一个随着手指路径移动的放大镜。我是通过截屏并将图像分配给放大镜图像视图来实现的,如下所示:
CGSize imageSize = frame.size;
UIGraphicsBeginImageContextWithOptions(imageSize, NO, 0.0);
CGContextRef c = UIGraphicsGetCurrentContext();
CGContextScaleCTM(c, scaleFactor, scaleFactor);
CGContextConcatCTM(c, CGAffineTransformMakeTranslation(-frame.origin.x, -frame.origin.y));
[self.layer renderInContext:c];
UIImage *screenshot = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return screenshot;
问题在于
self.layer renderInContext
很慢,所以当用户移动手指时会感到不流畅。我尝试在其他线程中运行self.layer renderInContext
,但是这使放大镜中的图像看起来很奇怪,因为放大镜中的图像出现了延迟。有没有更好的方法将视图渲染成图像?
renderInContext:
使用GPU吗?
renderInContext
是在 CPU 上执行的。 - Rob