Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- customclass
- MainScheduler
- iOS앱배포
- 앱버전구하기
- JavaScript
- 계산기앱만들기
- 스프링
- 파이썬서버
- 앱배포
- Xcode
- 개발기록
- DispatchGroup
- 웹
- Python
- Xib
- iOS계산기
- 자바스크립트
- 딩동말씀
- Swift
- FileOwner
- FLASK
- 계산기앱
- AJAX
- spring
- subscript
- 맥
- jQuery
- ios
- 스위프트
- iOS배포
Archives
- Today
- Total
개발하는 뚝딱이
[iOS] 스크린샷 찍고 앨범에 저장하기 본문
버튼을 누르면 자동으로 스크린샷이 찍히고, 앨범에 저장하기
Step1. 스크린 캡쳐
- 툴바 '카메라' 아이템을 클릭하면 화면 중앙에 아무렇게 배치되어 있는 UIImage에 화면 전체 스크린 캡쳐를 띄어주기
@IBAction func takeScreenshot(_ sender: UIBarButtonItem) {
UIGraphicsBeginImageContextWithOptions(self.view.frame.size, false, UIScreen.main.scale)
self.view.drawHierarchy(in: self.view.frame, afterScreenUpdates: true)
let image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
if let image = image {
self.image.image = image
}
}
void UIGraphicsBeginImageContextWithOptions(CGSize size, BOOL opaque, CGFloat scale);
- 그림을 그리기 위한 장소인 비트맵 기반의 '컨텍스트'를 생성하는 함수
- 컨텍스트는 그래픽 컨텍스트 스택에 푸쉬됨
- opaque를 false로 주고, scale을 1.0으로 주면 UIGraphicsBeginImageContext() 함수와 같아지지만, 레티나 디스플레이에선 이미지 품질이 낮아진다는 글을 읽어 위의 함수를 사용하하였다
func drawHierarchy(in rect: CGRect, afterScreenUpdates afterUpdates: Bool) -> Bool
- 화면에 보이는 것처럼 뷰의 스냅샷을 현재 컨텍스트에 렌더링하는 함수
func UIGraphicsGetImageFromCurrentImageContext() -> UIImage?
- 컨텍스트에 있는 컨텐츠를 이미지로 반환하는 함수
func UIGraphicsEndImageContext()
- 현재 컨텍스트를 스택에서 제거
step2. 반환된 이미지를 앨범에 저장
func saveImage() {
PHPhotoLibrary.requestAuthorization { status in
guard status == .authorized, let image = self.screenshot else { return }
PHPhotoLibrary.shared().performChanges({
PHAssetChangeRequest.creationRequestForAsset(from: image)
}, completionHandler: nil)
}
}
- Info.plist에서 'Privacy-PhotoLibrary Usage Description'을 추가해하여 권한 요청을 한다
위 글이 많은 도움이 되었다! 심지어 코드도 그냥 줌...!
Finish!
'iOS 개발일지' 카테고리의 다른 글
[iOS] iOS + Realm 모델 사용하기 (0) | 2020.10.06 |
---|---|
[iOS] iOS Device Support (0) | 2020.09.17 |
[iOS] Firebase 연동하기 (0) | 2020.06.30 |
[iOS] 알람, 타이머1 (2) | 2020.05.27 |
[iOS] 환율계산기 4 - 업데이트 1.1 (0) | 2020.05.13 |