如何拍摄USiew的ScreenShot哪个不在内存iOS中

时间:2017-05-04 10:17:45

标签: objective-c xcode

我想将UIView转换为UIImage,其中视图位于后台,当我检查视图层次结构时,它就是白色空间,可能它不会被加载.. 我想要做的是将视图加载到内存中并转换为图像。

2 个答案:

答案 0 :(得分:1)

您只需要使用所需的框架初始化视图,然后将下面的代码作为targetView传递给它。在调用下面的屏幕捕获方法之前初始化视图

UIView *targetView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 320, 568)]; //Initilization
UIImage *capturedImage = [self captureScreen:targetView]; //Call method


- (UIImage *)captureScreen:(UIView*)targetView
{
    UIView* captureView = targetView;
    UIGraphicsBeginImageContextWithOptions(captureView.bounds.size, captureView.opaque, 0.0);
    [captureView.layer renderInContext:UIGraphicsGetCurrentContext()];
    UIImage * screenshot = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    CGRect cropRect = CGRectMake(0 ,0 ,captureView.frame.size.width ,captureView.frame.size.height);
    UIGraphicsBeginImageContextWithOptions(cropRect.size, captureView.opaque, 1.2f);
    [screenshot drawInRect:cropRect];
    UIImage * customScreenShot = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return customScreenShot;
}

答案 1 :(得分:0)

使用此:

- (UIImage*)snapShot:(UIView*)myView {
    UIGraphicsBeginImageContext(myView.frame.size);
    [myView.layer renderInContext:UIGraphicsGetCurrentContext()];
    UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return viewImage;
}