일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- kakaomap
- snapkit
- 코딩테스트
- ios
- cocoapods
- SWIFT
- segue
- format형식
- Alert
- pod install
- autolayout
- Java
- AsyncImage
- programmers
- 백준
- image
- Appearance변경
- android
- Kotlin
- NotificationCenter
- ViewModifier
- SwiftUI_Preview_Provider
- MapKit
- ios15
- CoreLocation
- EventKit
- alamofire
- swiftUI
- UIStackView
- UserDefaults
- Today
- Total
감자주먹밥
[IOS] 카메라 사용하기 UIImagePickerController 본문
IOS 공부를 하면서 이정도 했으면 이제 작은 어플이라도 만들어야 하는거 아닌가 싶어서 어플을 만들려 준비하고 보니...
역시 할 줄 모르는 부분이 있었습니다 ㅎㅎ
앨범에 있는 사진, 카메라를 이용해 사진을 불러올 수 있는 UIImagePickerController에 대해서 알아보겠습니다!
UIImagePickerController
A view controller that manages the system interfaces for taking pictures, recording movies, and choosing items from the user's media library.
사진 동영상을 찍고 사용자 앨범에 사진을 선택할 때 사용할 시스템 인터페이스를 관리하는 컨트롤러 입니다!
IOS11부터는 사진을 가져올 때 권한이 필요없게 되어 편리하게 이용할 수 있습니다!
하나씩 밖에 못 가져온다는 단점이 있고, WWDC20에서 PHPicker라는게 나와 대체될 예정이지만 사용은 해 보고 가겠습니다!!
let camera = UIImagePickerController()// portrait mode only
camera.sourceType = .camera
camera.allowsEditing = false
camera.cameraDevice = .front
camera.cameraCaptureMode = .photo
camera.cameraFlashMode = .auto
camera.delegate = self
present(camera, animated: true, completion: nil)
UIImagePickerController는 많은 옵션이 있는데 하나씩 알아보겠습니다.
.sourceType
카메라, 앨범, 특별한 순간 중 인터페이스 타입을 정할 수 있습니다. (default -> photoLibrary)
.allowsEditing
사진 촬영 후 편집 가능하게 할 건지 정할 수 있습니다. (default -> false)
.cameraDevice
전면, 후면 카메라 선택을 할 수 있습니다. (default -> rear)
cameraCaptureMode
카메라 모드가 사진, 영상 중 하나를 고를 수 있습니다. (default -> Photo)
.cameraFlashMode
플래시 유무를 정할 수 있습니다. (default -> auto)
이렇게 만든 컨트롤러를 present에 넣어 화면을 전환해주면 됩니다!
delegate도 설정을 해 줘야합니다.
두 가지의 delegate가 있는데 UIImagePickerControllerDelegate, UINavigationControllerDelegate 가 있습니다.
UIImagePickerControllerDelegate -> 이미지를 선택하고 카메라 사용했을 때 다양한 동작을 도와줍니다.
UINavigationControllerDelegate -> 앨범 사진을 선택했을 때, 화면 전환을 네비게이션으로 이동합니다.
extension ViewController: UIImagePickerControllerDelegate, UINavigationControllerDelegate {
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
if let image = info[.originalImage] as? UIImage {
//선택된 이미지를 불러와서 표시
imageView.image = image
}
picker.dismiss(animated: true, completion: nil)
}
func imagePickerControllerDidCancel(_ picker: UIImagePickerController) {
picker.dismiss(animated: true, completion: nil)
}
}
imagePickerController는 이미지를 받았을 때 호출되는 함수입니다.
info 파라미터로 받은 이미지를 불러 올 수 있습니다.
imagePickerControllerDidCancel은 이미지를 선택 중 cancel을 눌렀을 때 호출됩니다.
두 함수 모두 마지막에 dismiss를 호출해서 화면을 이동해 줍니다.
마지막으로 실행만 하면 되는데! 시뮬레이터에선 안돌아갑니다. 카메라는 권한도 필요합니다.
Privacy - Camera Usage Description을 추가 해 줘야합니다.
정상적으로 실행이 되는 모습!
다음에는 PHPicker를 사용해 보고 정리하겠습니다!
'IOS > UIKit' 카테고리의 다른 글
[IOS] SnapKit 사용 스토리보드 없는 개발! (feat: SwiftUI_Preview_Provider) (0) | 2022.11.25 |
---|---|
[IOS] 첫 프로젝트 Thinking Mirror 회고 및 정리 (0) | 2022.09.28 |
[IOS] Alamofire! API사용해보기 (0) | 2022.02.25 |
M1 칩 CocoaPods pod install error & homebrew 설치 (0) | 2022.02.19 |
[IOS] Notification Center 사용하기 (0) | 2022.02.07 |