我能够裁剪视图使用此代码
- (UIImage *)captureScreenInRect:(CGRect)captureFrame {
CALayer *layer;
layer = self.view.layer;
UIGraphicsBeginImageContext(self.view.bounds.size);
CGContextClipToRect (UIGraphicsGetCurrentContext(),captureFrame);
[layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *screenImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return screenImage;
}
但是我有变换放大的imageview的并且不按比例显示。
如何捕捉精彩的用户看到屏幕上的内容
堆栈溢出问题“renderInContext:”和CATransform3D有更多的信息,但要点是:
QCCompositionLayer,CAOpenGLLayer和QTMovieLayer层不会呈现。 此外,使用3D变换层未呈现,也不是指定backgroundFilters,过滤器,compositingFilter或掩码值的层。
(从所述的CALayer文档 )。
更多信息也可在此技术Q&A: http://developer.apple.com/library/ios/#qa/qa1703/_index.html
如果您的应用程序不会应用商店,你可以使用无证UIGetScreenImage
API:
// Define at top of implementation file
CGImageRef UIGetScreenImage(void);
...
- (void)buttonPressed:(UIButton *)button
{
// Capture screen here...
CGImageRef screen = UIGetScreenImage();
UIImage* image = [UIImage imageWithCGImage:screen];
CGImageRelease(screen);
// Save the captured image to photo album
UIImageWriteToSavedPhotosAlbum(image, self, @selector(image:didFinishSavingWithError:contextInfo:), nil);
}
(由约翰Muchow )
然而,使用该API将使您的应用程序不会得到批准。
我一直无法找到任何其他解决方法。