截图最顶layer/view
Screenshot the top most layer/view
我有一个 UIView
,其中包含另一个 UIView
和 UIImage
。
dView=[[drawView alloc]initWithFrame:myUIView.frame];
[dView newMaskWithColor:[UIColor colorWithPatternImage:chosenImage]];
[myUIView addSubview:dView];
并且通过使用this代码,我删除了一部分,现在看起来像这样:
现在我在这个视图后面添加了一个layer
,并在layer
中呈现了另一个image
。
[myUIView.layer insertSublayer:_videoPreviewLayer below:dView.layer];
现在看起来像这样:(这是在设备上手动截取的屏幕截图)
当我尝试以编程方式截取上述视图时,结果是:
不知道为什么新添加的videopreview层没有出现screenshot.Here是我的截图方法
-(void)takeSnapShot{
UIView *topView = [[[[UIApplication sharedApplication] keyWindow] subviews] lastObject]; //tried this too
//capture the screenshot of the uiimageview and save it in camera roll
UIGraphicsBeginImageContext(self.myUIView.frame.size);
[self.myUIView.layer renderInContext:UIGraphicsGetCurrentContext()]; // tried this
[self.dView.layer renderInContext:UIGraphicsGetCurrentContext()]; //tried this
[self.view.layer renderInContext:UIGraphicsGetCurrentContext()]; //tried this
[topView.layer renderInContext:UIGraphicsGetCurrentContext()]; //tried this
UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
UIImageWriteToSavedPhotosAlbum(viewImage, nil, nil, nil);
}
我在单击视图控制器中的按钮时调用此方法。
我什至尝试捕获此 answer 建议的 window,但我仍然没有得到手动截屏的结果。
有什么方法可以捕获显示给用户的最上面的视图吗?
看看这个 post:Why don't added sublayers show up in screenshot?
似乎子层未由 renderInContext 方法处理。
当您想截取屏幕截图时,尝试将来自预览层的帧存储在 UIImageView 中,然后您应该能够手动将该帧放在遮罩下方,然后只截取超级视图。
我有一个 UIView
,其中包含另一个 UIView
和 UIImage
。
dView=[[drawView alloc]initWithFrame:myUIView.frame];
[dView newMaskWithColor:[UIColor colorWithPatternImage:chosenImage]];
[myUIView addSubview:dView];
并且通过使用this代码,我删除了一部分,现在看起来像这样:
现在我在这个视图后面添加了一个layer
,并在layer
中呈现了另一个image
。
[myUIView.layer insertSublayer:_videoPreviewLayer below:dView.layer];
现在看起来像这样:(这是在设备上手动截取的屏幕截图)
当我尝试以编程方式截取上述视图时,结果是
不知道为什么新添加的videopreview层没有出现screenshot.Here是我的截图方法
-(void)takeSnapShot{
UIView *topView = [[[[UIApplication sharedApplication] keyWindow] subviews] lastObject]; //tried this too
//capture the screenshot of the uiimageview and save it in camera roll
UIGraphicsBeginImageContext(self.myUIView.frame.size);
[self.myUIView.layer renderInContext:UIGraphicsGetCurrentContext()]; // tried this
[self.dView.layer renderInContext:UIGraphicsGetCurrentContext()]; //tried this
[self.view.layer renderInContext:UIGraphicsGetCurrentContext()]; //tried this
[topView.layer renderInContext:UIGraphicsGetCurrentContext()]; //tried this
UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
UIImageWriteToSavedPhotosAlbum(viewImage, nil, nil, nil);
}
我在单击视图控制器中的按钮时调用此方法。
我什至尝试捕获此 answer 建议的 window,但我仍然没有得到手动截屏的结果。
有什么方法可以捕获显示给用户的最上面的视图吗?
看看这个 post:Why don't added sublayers show up in screenshot?
似乎子层未由 renderInContext 方法处理。
当您想截取屏幕截图时,尝试将来自预览层的帧存储在 UIImageView 中,然后您应该能够手动将该帧放在遮罩下方,然后只截取超级视图。