티스토리 뷰
이번 포스트에서는 UIView를 Image로 Rendering하여 앨범에 저장하는 방법에 대해 살펴보도록 하겠습니다.
권한 추가
우선 앨범에 접근을 해야 하므로 접근 권한을 요청하여야 합니다.
info.plist에 아래와 같이 "App Transport Security~", "Allow Arbitrary Loads = YES"항목을 추가해주시기 바랍니다.
Storyboard 생성 및 레이아웃 구성
Sample로 뷰를 스토리보드에 배치하도록 합니다. 저는 중첩된 View도 이미지로 변환할 수 있는지 검증하기 위하여 2개의 View를 겹쳐 구성하였으며 각 View에는 다른 배경색상을 적용하였습니다.
Image Rendering하고 앨범에 저장하기
실제로 View를 이미지로 렌더링하고 앨범에 저장하는 기능을 구현해보도록 하겠습니다.
우선 이미지로 렌더링 하는 코드를 살펴보겠습니다.
@IBOutlet weak var viewForCapture: UIView!
private func renderViewAsImage() {
let renderer = UIGraphicsImageRenderer(size: viewForCapture.bounds.size)
let image = renderer.image { ctx in
viewForCapture.drawHierarchy(in: viewForCapture.bounds, afterScreenUpdates: true)
}
}
저장하고자 하는 View의 크기 만큼 이미지로 렌더링 하는 것을 확인할 수 있습니다.
여기에 앨범에 저장하는 코드를 넣어보도록 하겠습니다.
앨범에 추가하는 코드는 딱 한 줄이면 됩니다. 다만, Handler 메소드를 구현해야 하기 때문에 라인 수는 사람마다 다를 수 있습니다.
먼저 핸들러 메소드입니다. 이 메소드는 성공 및 실패에 따른 처리 로직을 넣는 메소드입니다. 저는 간단하게 Print를 하는 코드만 추가하였습니다.
@objc func image(_ image: UIImage, didFinishSavingWithError error: NSError?, contextInfo: UnsafeRawPointer) {
// After Saving
if let error = error {
// error
print(error.localizedDescription)
} else {
// save
print("Image Saved")
}
}
이제 위의 이미지 렌더링 코드에 앨범에 저장하는 한 줄 코드를 추가하도록 하겠습니다.
UIImageWriteToSavedPhotosAlbum(image, self,
#selector(image(_:didFinishSavingWithError:contextInfo:)), nil)
실제 코드를 실행하면 아래와 같이 원하는 View만 이미지로 렌더링되어 저장 된 것을 확인하실 수 있습니다.
이번 포스트에서는 View를 이미지로 렌더링 하는 방법에 대해 살펴보았습니다.
'Frontend > iOS' 카테고리의 다른 글
[iOS] Swift UI Group, View 속성 사용해보기 (0) | 2020.03.28 |
---|---|
[iOS] Swift UI 시작하기 (0) | 2020.03.28 |
[iOS] UINavigation Controller에서의 Status Bar Tint Color 해결 (0) | 2020.03.08 |
[iOS] 내 앱에 Google AdMob iOS 연동하기 (2) | 2020.03.01 |
시간표 라이브러리 Elliotable 1.2.0 Update Log (0) | 2020.02.24 |
- Total
- Today
- Yesterday
- Rxjava
- 함수형
- apple
- 함수형프로그래밍
- java
- watchos
- retrofit
- 스위프트
- Auto Layout
- 안드로이드
- 알고리즘
- databinding
- 오토레이아웃
- 애플워치
- 컬렉션
- 상속
- Swift
- C++
- Reactive programming
- Notissu
- android
- SwiftUI
- ios
- Elliotable
- XCode
- Kotlin
- Apple Watch
- 아이폰
- 코틀린
- CloudComputing
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |