使用混合视图控制器、3d 场景工具包、uiwebkit 捕获屏幕
Capturing screen with mixed view controllers, 3d scene kit, uiwebkit
我的 iPad 应用程序可以对显示的所有视图控制器进行屏幕截图,除了 3d scenekit VC。
这是我捕获屏幕的代码
@IBAction func screenImage(sender: UIBarButtonItem) {
//Create the UIImage
UIGraphicsBeginImageContext(view.frame.size)
view.layer.renderInContext(UIGraphicsGetCurrentContext())
let screenshot: UIImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
//Save it to the camera roll
UIImageWriteToSavedPhotosAlbum(screenshot, nil, nil, nil)
//save to user documents access via iTunes
CaptureOutput.saveImage(screenshot)
}
我把截屏VC设为最高atIndex级别,其他的VC都在atIndex以下。
来自节目
用我的 phone 拍摄。
我需要强制渲染场景套件吗?如果是这样怎么办?有帮助吗?
有一个已确认的错误(雷达编号 17851775)
而且他们还提供了解决方法。他们建议,而不是:
UIGraphicsBeginImageContextWithOptions(self.view.bounds.size, NO, 0);
[self.view drawViewHierarchyInRect:self.view.bounds afterScreenUpdates:YES];
UIImage *im = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
/* Use im */
我应该这样做
UIGraphicsBeginImageContextWithOptions(self.view.bounds.size, NO, 0);
[self.view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *im = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
自 iOS 7 以来,推荐的捕获视图的方法是使用 drawViewHierarchyInRect:afterScreenUpdates:
(或在文档中捕获视图快照下它旁边列出的其他方法之一)。这捕获了 CALayer 内容中没有的东西,我相信它包括由 SceneKit 渲染的 OpenGL 内容。
请注意,如果您只需要捕获 SceneKit 视图而不是它所在的视图层次结构的其余部分,则可以只使用 SCNView
方法 snapshot
。
不过,其中 None 会捕捉到您手的反射,phone。
我的 iPad 应用程序可以对显示的所有视图控制器进行屏幕截图,除了 3d scenekit VC。
这是我捕获屏幕的代码
@IBAction func screenImage(sender: UIBarButtonItem) {
//Create the UIImage
UIGraphicsBeginImageContext(view.frame.size)
view.layer.renderInContext(UIGraphicsGetCurrentContext())
let screenshot: UIImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
//Save it to the camera roll
UIImageWriteToSavedPhotosAlbum(screenshot, nil, nil, nil)
//save to user documents access via iTunes
CaptureOutput.saveImage(screenshot)
}
我把截屏VC设为最高atIndex级别,其他的VC都在atIndex以下。
来自节目
用我的 phone 拍摄。
我需要强制渲染场景套件吗?如果是这样怎么办?有帮助吗?
有一个已确认的错误(雷达编号 17851775)
而且他们还提供了解决方法。他们建议,而不是:
UIGraphicsBeginImageContextWithOptions(self.view.bounds.size, NO, 0);
[self.view drawViewHierarchyInRect:self.view.bounds afterScreenUpdates:YES];
UIImage *im = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
/* Use im */
我应该这样做
UIGraphicsBeginImageContextWithOptions(self.view.bounds.size, NO, 0);
[self.view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *im = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
自 iOS 7 以来,推荐的捕获视图的方法是使用 drawViewHierarchyInRect:afterScreenUpdates:
(或在文档中捕获视图快照下它旁边列出的其他方法之一)。这捕获了 CALayer 内容中没有的东西,我相信它包括由 SceneKit 渲染的 OpenGL 内容。
请注意,如果您只需要捕获 SceneKit 视图而不是它所在的视图层次结构的其余部分,则可以只使用 SCNView
方法 snapshot
。
None 会捕捉到您手的反射,phone。