[swift] Swift Device의 스크린샷 및 화면 녹화 기능

iOS 앱을 개발하는 데에는 종종 스크린샷을 찍거나 화면을 녹화하는 기능이 필요할 수 있습니다. Swift 언어를 이용하여 iOS 앱에서 스크린샷을 찍거나 화면을 녹화하는 방법에 대해 알아보겠습니다.

스크린샷 찍기

UIScreenshot 클래스를 사용하면 현재 디바이스의 화면을 스크린샷으로 찍을 수 있습니다. 아래는 스크린샷을 찍는 함수의 예시 코드입니다:

import UIKit

func takeScreenshot() -> UIImage? {
    let window = UIApplication.shared.windows.first
    UIGraphicsBeginImageContextWithOptions(window?.frame.size ?? CGSize.zero, false, UIScreen.main.scale)
    window?.drawHierarchy(in: window?.bounds ?? CGRect.zero, afterScreenUpdates: true)
    let image = UIGraphicsGetImageFromCurrentImageContext()
    UIGraphicsEndImageContext()

    return image
}

위 코드에서는 현재 앱에 보이는 첫 번째 창을 스크린샷으로 찍어 반환합니다. 이 함수를 호출하면 현재 앱의 스크린샷을 얻을 수 있습니다.

화면 녹화하기

화면을 녹화하기 위해 ReplayKit 프레임워크를 사용할 수 있습니다. 아래는 화면을 녹화하는 함수의 예시 코드입니다:

import ReplayKit

var recorder: RPScreenRecorder?

func startScreenRecording() {
    if RPScreenRecorder.isAvailable() {
        RPScreenRecorder.shared().startRecording { (error) in
            if let error = error {
                print("Failed to start recording: \(error.localizedDescription)")
            } else {
                print("Screen recording started")
            }
        }
    }
}

func stopScreenRecording() {
    RPScreenRecorder.shared().stopRecording { (previewViewController, error) in
        if let error = error {
            print("Failed to stop recording: \(error.localizedDescription)")
        } else if let previewViewController = previewViewController {
            previewViewController.previewControllerDelegate = self
            present(previewViewController, animated: true, completion: nil)
        }
    }
}

위 코드에서는 RPScreenRecorder 클래스를 사용하여 화면 녹화를 시작하고 정지할 수 있습니다. startScreenRecording 함수는 녹화를 시작하고, stopScreenRecording 함수는 녹화를 정지하고 녹화된 영상의 미리보기를 표시합니다.

결론

위에서는 Swift 언어를 이용하여 iOS 앱에서 스크린샷을 찍고 화면을 녹화하는 방법을 살펴보았습니다. 이를 활용하여 사용자가 앱 화면을 캡처하거나 화면을 공유할 수 있는 유용한 기능을 개발할 수 있습니다.

참고 자료