iOS内部使用UIImageView捕获UIView

时间:2013-03-06 17:41:26

标签: ios uiview uiimageview image-capture

我正在尝试在iOS上获取UIView屏幕截图。

在我看来,我有两个带动画的UIImageView。

我用它捕获视图的代码是:

UIGraphicsBeginImageContextWithOptions(self.view.bounds.size, NO, 1.0);
[self.view.layer renderInContext:UIGraphicsGetCurrentContext()];
// Read the UIImage object
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

UIImageWriteToSavedPhotosAlbum(image, self,
                               @selector(image:didFinishSavingWithError:contextInfo:), nil);

结果是带有背景的图像和只有一个UIImageView。两个ImageView都在一直运行。如果我拍了几张照片,那么UIImageView每次都处于相同的位置。

1 个答案:

答案 0 :(得分:2)

试试这个:

-(CGImageRef)imageCapture
{
   UIGraphicsBeginImageContext(self.view.bounds.size);
   [self.view.layer renderInContext:UIGraphicsGetCurrentContext()];
   UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
   UIGraphicsEndImageContext();
   CGRect rect= CGRectMake(0,0 ,width, height);

   CGImageRef imageRef = CGImageCreateWithImageInRect([viewImage CGImage], rect);
   return imageRef;
}

每当您想要捕捉屏幕时,请使用以下行

UIImage *captureImg=[[UIImage alloc] initWithCGImage:[self imageCapture]];