티스토리 뷰

iOS

[iOS] UIImagePickerController 번역

Kim_Baechu 2021. 10. 22. 22:09

사진을 찍고 동영상을 녹화하며 사용자의 미디어 라이브러리에서 항목을 선택하기 위한 시스템 인터페이스를 관리하는  ViewController.

Declaration

@MainActor class UIImagePickerController : UINavigationController

Overview

이미지 picker 컨트롤러는 사용자 상호 작용을 관리하고 이러한 상호 작용의 결과를 delegate 개체로 전달합니다.

이미지 picker 컨트롤러의 역할과 모양은 컨트롤러가 표시되기 전에 할당한 소스 유형에 따라 달라집니다.

* UIImagePickerController.SourceType.camera는 미디어 캡처를 지원하는 장치에서 새 사진 또는 동영상을 촬영하기 위한 사용자 인터페이스를 제공합니다.

* UIImagePickerController.SourceType.photoLibrary 또는 UIImagePickerController.SourceType.savedPhotosAlbum은 저장된 사진 및 동영상 중에서 선택할 수 있는 사용자 인터페이스를 제공합니다.

 

기본 컨트롤이 포함된 이미지 선택 컨트롤러를 사용하려면 다음 단계를 수행하십시오.

 

1. 장치가 원하는 원본에서 콘텐츠를 선택할 수 있는지 확인합니다. UIImagePickerController.SourceType 열거형 상수를 제공하는 isSourceTypeAvailable(_:) 클래스 메서드를 호출하여 이 작업을 수행합니다.

2. availableMediaTypes(for:) 클래스 메서드를 호출하여 사용 중인 원본 유형에 사용할 수 있는 미디어 유형을 확인합니다. 이렇게 하면 비디오 녹화에 사용할 수 있는 카메라와 스틸 이미지에만 사용할 수 있는 카메라를 구분할 수 있습니다.

3. mediaTypes 속성을 설정하여 이미지 선택기 컨트롤러가 사용 가능하게 하려는 mediaTypes(스틸 이미지, 동영상 또는 둘 다)에 따라 UI를 조정하도록 합니다.

4. 사용자 인터페이스를 제시합니다. iPhone 또는 iPod touch에서 현재 활성 보기 컨트롤러의 present(_:animated:completion:) 메서드를 호출하여 구성된 이미지 선택 컨트롤러를 새 보기 컨트롤러로 전달합니다.

iPad에서 이미지 선택기를 올바르게 표시하는 방법은 다음 표에 요약된 원본 유형에 따라 달라집니다.

 

Camera Photo Library Saved Photos Album
Use full screen Must use a popover Must use a popover

아이패드에서는 UIImagePickerController.SourceType.photoLibraryUIImagePickerController.SourceType.savedPhotosAlbum를 쓸 때는 popover 컨트롤러를 사용하여 이미지 선택기를 표시해야 합니다. (참고UIPopoverPresentationController)

 

저장된 사진 및 동영상 중에서 선택할 수 있도록 이미지 picker를 modal(전체 화면)으로 표시하려고 하면 시스템에서 예외가 발생합니다.

 

아이패드에서 UIImagePickerController.SourceType.camera를 쓸 때는 modal이나 popover가 가능하지만 애플은 전체화면을 추천합니다.

 

더 자세한 사항은, Taking Pictures and Movies

 

이미지 선택 컨트롤러를 사용자 지정하여 사용자 상호 작용을 직접 관리할 수 있습니다.

이렇게 하려면 표시할 컨트롤이 포함된 오버레이 뷰를 제공하고 Capturing Still Images or Movies에 설명된 메서드를 사용합니다.

기본 컨트롤과 함께 또는 대신 사용자 정의 오버레이 뷰를 표시할 수 있습니다.

UIImagePickerController 클래스에 대한 사용자 지정 오버레이 보기는 iOS 3.1 이상에서 cameraOverlayView 속성을 통해 사용할 수 있습니다.

코드 예는 Customizing an Image Picker Controller를 참조하십시오.

 

cameraOverlayView

중요
UIImagePickerController 클래스는 세로 모드만 지원합니다.
이 클래스는 있는 그대로 사용할 수 있으며 하위 클래싱을 지원하지 않습니다.
이 클래스의 뷰 계층은 private이므로 한 가지 예외를 제외하고 수정할 수 없습니다.
CameraOverlayView 속성에 사용자 지정 뷰를 할당하고 이 뷰를 사용하여 추가 정보를 표시하거나 카메라 인터페이스와 코드 간의 상호 작용을 관리할 수 있습니다.

 

Providing a Delegate Object

이미지 선택 컨트롤러를 사용하려면 UIImagePickerControllerDelegate프로토콜을 준수하는 delegate를 제공해야 합니다.

iOS 4.1부터는 대리자를 사용하여 스틸 이미지 메타데이터를 이미지와 함께 카메라 롤에 저장할 수 있습니다. 

참고UIImagePickerControllerDelegate

 

Adjusting Flash Mode

iOS 4.0 이상에서는 사용자가 플래시 모드를 조정하고(플래시 LED가 있는 장치), 사용할 카메라(전면 및 후면 카메라가 있는 장치)를 선택하고 스틸 이미지와 동영상 캡처를 전환할 수 있도록 사용자 정의 컨트롤을 제공할 수 있습니다.

이러한 설정을 프로그래밍 방식으로 관리할 수도 있습니다.

플래시를 직접 조작하여 스트로보 조명과 같은 효과를 제공할 수도 있습니다.

비디오 캡처 모드를 사용할 선택 인터페이스 세트를 제공합니다.

그런 다음 cameraFlashMode속성 UIImagePickerController.CameraFlashMode.on, UIImagePickerController.CameraFlashMode.off을 이용해서 LDE를 켜거나 끕니다.

Working with Movies

동영상 캡처에는 기본 시간 제한이 10분이지만 videoMaximumDuration 속성을 사용하여 조정할 수 있습니다.

사용자가 공유 버튼을 눌러 동영상을 MMS나 유튜브, 다른 목적지로 보내면 적절한 기간 제한과 적절한 영상 화질이 적용됩니다.

기본 카메라 인터페이스는 이전에 저장한 동영상의 편집을 지원합니다.

편집에는 동영상의 시작 또는 끝을 자른 다음 잘린 동영상을 저장하는 작업이 포함됩니다.

새 동영상 녹화를 지원하는 인터페이스가 아닌 동영상 편집 전용 인터페이스를 표시하려면 이 클래스 대신 UIVideoEditorController 클래스를 사용하십시오.

UIVideoEditorController를 참조하십시오.

 

Working with Live Photos

라이브 포토는 지원되는 장치의 카메라 앱 기능으로, 사진을 한 순간만 촬영할 수 있는 것이 아니라 캡처 직전 및 직후의 움직임과 소리를 포함할 수 있습니다.

PHLivePhoto 개체는 Live Photo를 나타내며 PHLivePhotoView 클래스는 Live Photo를 표시하고 콘텐츠를 재생하기 위한 시스템 표준 사용자 인터페이스를 제공합니다.

라이브 포토에는 소리와 동작이 포함되어 있지만, 여전히 사진으로 남아 있습니다.

이미지 선택 컨트롤러를 사용하여 스틸 이미지를 캡처하거나 선택하는 경우(kUTTypeImage 유형만 mediaTypes 배열에 포함) 실시간 사진으로 캡처된 자산이 선택기에 계속 표시됩니다.

그러나 사용자가 자산을 선택하면 delegate 개체에는 Live Photo의 스틸 이미지 표현이 포함된 UIImage 개체만 수신됩니다.

사용자가 이미지 선택기를 사용하여 Live Photo를 선택할 때 전체 모션과 사운드 콘텐츠를 얻으려면 mediaTypes 배열에 kUTTypeImage 및 kUTTypeLivePhoto 유형을 모두 포함해야 합니다.

자세한 내용은 UIImagePickerControllerDelegatelivePhoto를 참조하십시오.

Fully-Customized Media Capture and Browsing

완전한 사용자 정의된 이미지 또는 동영상 캡처를 수행하려면 Still and Video Media Capture에 설명된 대로 AVFoundation 프레임워크를 사용하십시오.

AVFoundation 프레임워크를 사용한 카메라 액세스는 iOS 4.0부터 사용할 수 있습니다.

사진 라이브러리를 탐색하기 위해 사용자 지정된 이미지 선택기를 만들려면 사진 프레임워크의 클래스를 사용합니다.

예를 들어, iOS에서 생성 및 캐시된 더 큰 축소 이미지를 표시하거나, 타임스탬프 및 위치 정보를 포함한 이미지 메타데이터를 사용하거나, MapKit 및 iCloud Photo Sharing과 같은 다른 기능과 통합하는 사용자 정의 이미지 선택기를 만들 수 있습니다.

자세한 내용은 사진을 참조하십시오.

사진 프레임워크를 사용한 미디어 검색은 iOS 8.0부터 사용할 수 있습니다.

 

댓글
공지사항