我有一个UIView
,其中包含另一个UIView
UIImage
。
dView=[[drawView alloc]initWithFrame:myUIView.frame];
[dView newMaskWithColor:[UIColor colorWithPatternImage:chosenImage]];
[myUIView addSubview:dView];
通过使用this代码,我删除了它的一部分,现在看起来像这样:
现在我在此视图后面添加了layer
,并在image
中显示了另一个layer
。
[myUIView.layer insertSublayer:_videoPreviewLayer below:dView.layer];
现在它看起来像这样:(这是在设备上手动拍摄的屏幕截图)
我不知道为什么新增加的videopreview图层没有出现在屏幕截图中。这是我的截图方法。
-(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建议的窗口,但我仍然没有得到手动屏幕截图的结果。
有没有办法捕获向用户显示的最顶层视图?
答案 0 :(得分:1)
查看此帖子:Why don't added sublayers show up in screenshot?
似乎子图层不是由renderInContext方法处理的。
如果要捕获屏幕截图,请尝试在UIImageView中存储预览图层中的帧,然后您应该能够手动将该帧放在屏幕下方并截取超视图。