이 게시물에서는 iOS에서 프로그래밍 방식으로 스크린샷을 찍는 방법을 배웁니다.
값을 변경할 textField에 추가하고 버튼을 눌러 스크린샷을 찍은 다음 버튼 바로 아래에 배치할 imageView에 스크린샷을 표시합니다.
길게 누르거나 다른 제스처에 이 기능을 추가할 수 있으며 원하는 경우 이미지를 저장할 수도 있습니다. 하지만 지금은 스크린샷을 캡처하여 이미지 보기에 표시하는 데만 집중할 것입니다.
시작하겠습니다
1단계 − Xcode 열기 → 새 프로젝트 → 단일 보기 애플리케이션 → 이름을 "TakeScreenShot"으로 지정합니다.
2단계 − Main.storyboard를 열고 아래와 같이 UITextField 1개, 버튼 1개, UIImageView 1개를 추가합니다.
3단계 − 이미지 보기용 @IBOutlet 1개를 첨부합니다. 이름을 snapShotImageView로 지정합니다. 캡처한 스크린샷을 뿌릴 이미지 보기입니다.
4단계 − '스냅샷 찍기' 버튼의 touchUpInside에 하나의 @IBAction을 추가합니다. 함수 이름을 takeSnapShotClicked로 지정합니다.
5단계 − ViewController 클래스의 viewDidLoad에서 imageView의 테두리 색상과 너비를 설정하여 view의 다른 부분과 구별되도록 합니다.
self.snapShotImageView.layer.borderColor = UIColor.red.cgColor self.snapShotImageView.layer.borderWidth = 2.0
6단계 − 다음 방법을 사용하여 스크린샷을 캡처합니다.
- 그래픽 컨텍스트를 시작합니다.
- 변수의 현재 컨텍스트를 캡처합니다.
- 컨텍스트 변수에서 현재 보기 레이어를 렌더링합니다.
- 컨텍스트 변수에서 이미지를 가져옵니다. 이 시점의 컨텍스트에는 현재 보기에서 사용할 수 있는 모든 항목의 스크린샷이 포함됩니다.
- 캡처된 이미지를 컨텍스트에서 imageView로 설정합니다.
- 그래픽 컨텍스트 종료
위의 모든 작업은 takeSnapShotClicked 메서드에서 수행됩니다. 이제 다음과 같이 보일 것입니다.
@IBAction func takeSnapShotClicked(_ sender: Any) { UIGraphicsBeginImageContextWithOptions(self.view.layer.frame.size, false, UIScreen.main.scale); guard let context = UIGraphicsGetCurrentContext() else {return } self.view.layer.render(in:context) self.snapShotImageView.image = UIGraphicsGetImageFromCurrentImageContext() UIGraphicsEndImageContext() }
7단계 − 프로젝트를 빌드하고 실행합니다. 스냅샷 찍기 버튼을 클릭합니다. 하단 이미지 보기에 스냅샷이 표시되어야 합니다.