Я пытаюсь сделать снимок экрана абсолютно всего, что отображается на дисплее 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()
Есть ли лучший способ скриншота все, чтобы вести себя как аппаратный индуцированный метод? Или как я могу включить то, что камера видит на скриншоте?
Спасибо!
ОБНОВЛЕНИЕ: В случае, если кто-то в будущем хочет знать, как я исправил это, потому что я не могу делать снимки экрана, которые я сам не рисую, я решил эту проблему, сделав снимок с камерой и установив это изображение как фон представления, а затем выполнение функции скриншота, и он работает!
Код этого ответа заключается в том, как я выполняю скриншот на данный момент, но скриншоты не включают то, что видит камера. Возможно, мне нужно запустить сеанс камеры в UIView? – Stickerbox