2016-03-24 65 views
0

我试图截取显示在iPhone显示屏上的所有内容的屏幕截图,与按住home + power按钮的方式完全相同。我现在有截图中的代码是这样的:截图显示所有内容

func screenShotMethod() { 

    //hide UI 
    buttonTrigger.hidden = true 

    //take screenshot 
    let layer = UIApplication.sharedApplication().keyWindow!.layer 
    let scale = UIScreen.mainScreen().scale 
    UIGraphicsBeginImageContextWithOptions(view.frame.size, false, scale); 

    layer.renderInContext(UIGraphicsGetCurrentContext()!) 
    let screenshot = UIGraphicsGetImageFromCurrentImageContext() 
    UIGraphicsEndImageContext() 

    UIImageWriteToSavedPhotosAlbum(screenshot, nil, nil, nil) 

    //show UI 
    buttonTrigger.hidden = false 
} 

的一点是,我使用的相机,并把照片在检测到任何的脸,最简单的方法是保存到相机胶卷仅仅是隐藏UI并截屏。然而,使用这种方法,我可以获得正确位置和大小的人脸跟踪图片的截图,但不会显示相机在下面看到的 - 只是白色。我能够像这样)使用CameraEngine框架在viewDidLoad中(相机:

override func viewDidLoad() { 
    super.viewDidLoad() 

    self.cameraEngine.startSession() 

有没有更好的办法来截图一切行为像硬件引起的方法?或者我怎么能包含相机在屏幕截图中看到的内容?

谢谢!

更新:如果将来有人想知道我是如何解决这个问题的,因为我无法截图,所以我没有画出自己,我通过用相机拍摄照片并将该图像设置为视图的背景,然后执行截图功能,它的工作原理!

+0

该答案中的代码是我此刻正在执行屏幕截图的过程,但屏幕截图不包含相机所看到的内容。也许我需要在UIView中启动相机会话? – Stickerbox

回答

3

从iOS 9开始,屏幕截图不再可能包含未被程序绘制的屏幕元素。您只能捕获应用程序的视图和图层。苹果公司并没有向第三方开发商公开由Power + home引发的功能。

+0

谢谢你的回应! – Stickerbox