[swift] Swift Core Graphics로 스크린 샷 찍기

스크린 샷을 찍는 기능은 앱에서 유용한 기능 중 하나입니다. Core Graphics를 사용하여 Swift에서 스크린 이미지를 캡처하는 방법을 살펴보겠습니다.

1. 이미지 캡처 함수 작성

먼저, 이미지 캡처 기능을 구현할 함수를 작성해야 합니다.

func takeScreenshot() -> UIImage? {
    guard let window = UIApplication.shared.windows.first(where: { $0.isKeyWindow }) else {
        return nil
    }
    
    UIGraphicsBeginImageContextWithOptions(window.frame.size, false, 0)
    window.drawHierarchy(in: window.bounds, afterScreenUpdates: true)
    
    let screenshot = UIGraphicsGetImageFromCurrentImageContext()
    UIGraphicsEndImageContext()
    
    return screenshot
}

위의 코드에서는 takeScreenshot 함수를 사용하여 앱 화면의 스크린 샷을 캡처합니다.

2. 스크린 샷 저장

이제 스크린 샷을 캡처하고 저장하는 방법을 살펴보겠습니다.

if let screenshot = takeScreenshot() {
    UIImageWriteToSavedPhotosAlbum(screenshot, nil, nil, nil)
}

위의 코드는 takeScreenshot 함수를 사용하여 캡처한 이미지를 사진 앨범에 저장합니다.

3. 권한 설정

스크린 샷을 앨범에 저장하려면 Info.plist 파일에 다음과 같은 권한을 추가해야 합니다.

<key>NSPhotoLibraryAddUsageDescription</key>
<string>We need permission to save screenshots to your photo library</string>

위의 설정을 통해 사용자에게 스크린 샷 저장 권한을 요청할 수 있습니다.

요약

Swift에서 Core Graphics를 사용하여 스크린 샷을 찍고 저장하는 방법에 대해 살펴보았습니다. 이를 통해 앱에 유용한 스크린 샷 기능을 구현할 수 있습니다.

참고 자료: Apple Developer Documentation, Hacking with Swift