iOS 用 UIImageView 捕获 UIView

Posted

技术标签:

【中文标题】iOS 用 UIImageView 捕获 UIView【英文标题】:iOS capture UIView with UIImageView inside 【发布时间】:2013-03-06 17:41:26 【问题描述】:

我正在尝试在 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 每次都在同一个位置。

【问题讨论】:

使用self.view.layer.presentationLayer 【参考方案1】:

试试这个:

-(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]];

【讨论】:

以上是关于iOS 用 UIImageView 捕获 UIView的主要内容,如果未能解决你的问题,请参考以下文章

在代码中自动调整 UIImageView

在 ios 上使用 AspectFill 截取 UIImageView

IOS:用 UIImageView 填充 NSArray

由于未捕获的异常而终止应用程序 [UIImageView _isResizable]

用手指IOS调整UIImageView的大小

UIImageView:如何在平移和缩放后仅捕获可见内容