2016-03-24 2 views
0

Я пытаюсь сделать снимок экрана абсолютно всего, что отображается на дисплее iPhone, так же, как и нажатие кнопок «домой + питание». Код Сейчас я должен скриншоту это:Скриншот все на дисплее

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 
} 

Дело в том, что я использую камеру и положить изображение над любым лицом он обнаруживает, и самый простой способ сохранить, что в камере ролл, это просто скрыть пользовательский интерфейс и скриншот экрана. Однако с помощью этого метода я получаю снимок экрана с изображением лица, в правильном положении и размере, но не в том, что камера видит под ним - просто белая. Я позволяю камеру с помощью рамки CameraEngine в viewDidLoad(), как это:

override func viewDidLoad() { 
    super.viewDidLoad() 

    self.cameraEngine.startSession() 

Есть ли лучший способ скриншота все, чтобы вести себя как аппаратный индуцированный метод? Или как я могу включить то, что камера видит на скриншоте?

Спасибо!

ОБНОВЛЕНИЕ: В случае, если кто-то в будущем хочет знать, как я исправил это, потому что я не могу делать снимки экрана, которые я сам не рисую, я решил эту проблему, сделав снимок с камерой и установив это изображение как фон представления, а затем выполнение функции скриншота, и он работает!

+0

Код этого ответа заключается в том, как я выполняю скриншот на данный момент, но скриншоты не включают то, что видит камера. Возможно, мне нужно запустить сеанс камеры в UIView? – Stickerbox

ответ

3

Начиная с iOS 9, невозможно снять снимок экрана, который содержит элементы экрана, не нарисованные вашей программой. Вы можете захватывать только виды и слои вашего приложения. Apple не раскрывает функцию, которая запускается с помощью power + home сторонним разработчикам.

+0

Спасибо за ваш ответ! – Stickerbox

Смежные вопросы