[iOS] 카메라 연결하기

2021. 1. 21. 12:51iOS develop

 오늘은 카메라 버튼을 누르면 카메라가 켜지고 사진 앨범에 저장하는 카메라 기능을 구현해 보았습니다!

화면 중앙에 UIImageView를 놓았고, 아랫쪽에는 toolbar를 넣어 카메라 모양의 bar button item을 넣어주었습니다. 버튼 좌측에 flexible space를 넣어 카메라 버튼을 우측으로 보내줬습니다.

 

이제 카메라 버튼을 누르면 카메라가 뿅 나오도록 코드를 짜보겠습니다.

 

1. MobileCoreServices 패키지 import하기

MobileCoreServices 는 카메라같이 운영체제에서 제공하는 기능을 사용할 수 있도록 하는 패키지라고 합니다. 따라서 카메라를 사용하기 위해서는 'import MobileCoreServices' 를 해줘야 합니다!

 

 

2. UIImagePickerControllerDelegate, UINavigationControllerDelegate 프로토콜 상속받기

🧐이 둘을 상속받는 이유

 

 

3. Info.plist 에서 권한 설정해주기

카메라와 사진 앨범에 접근하기 위해서는 권한 설정이 필요합니다. Info.plist로 이동하여 마우스 우클릭을 하면 Add Row를 통해 권한을 추가할 수 있습니다. 사진에 표시된 두 개의 권한을 설정하고 권한에 대한 설명도 적어줍니다.

 

 

4. Action 함수 구현하기

카메라 버튼을 눌렀을 때 동작할 액션 함수를 구현해줍니다.

스토리보트의 카메라버튼에서 끌어와 액션 함수를 생성해줍니다. 그리고 imagePicker의 delegate 를 self로 해줘서 현재 클래스에 위임을 받습니다. 그리고 sourceType을 camera로 설정해줍니다. 그리고 present를 통해 화면 전환을 해줍니다. 이제 카메라 버튼을 누르면 imagePicker에 설정한 카메라 화면으로 바뀌고 사진을 찍고 사용할지 선택할 수 있게됩니다.

 

 

5. imagePickerController 함수 구현해주기

imagePickerController는 우리가 상속받았던 UIImagePickerControllerDelegate 프로토콜에 정의되어 있는 함수입니다. 우리는 이 함수를 구현해서 카메라를 연 후에는 무엇을 할 것인지 적어줘야 합니다.

 

자동완성에서 두 번째에 있는 녀석을 선택하고 구현해보겠습니다. 함수의 두 번째 인자로 있는 클로저를 보면 didFinishPickingMediaWithInfo 라고 되어있습니다. 말 그대로 미디어를 선택한 후에 어떤 일을 할지 구현해주면 됩니다.

미디어가 이미지인지 확인하여 맞다면 imageView에 넣어주었습니다. 그리고 dissmiss를 통해 현재 화면인 카메라를 닫아주었습니다. 만약 앨범에도 저장하고 싶다면 UIImageWriteToSavePhotoAlbum(captureImage, self, nil, nil) 을 if 문 안에 추가해주면 됩니다! 

 

이렇게 하면 앱이 정상적으로 작동하는 것을 확인할 수 있습니다. 요런 식으로요 ㅎㅎ 😙

난로쬐는 라이언

 

'iOS develop' 카테고리의 다른 글

[iOS] UICollectionView 사용법  (0) 2021.03.07
[iOS] Custom TableView 만들기  (2) 2021.01.18
[iOS - Error] setValue:forUndefinedKey 에러  (0) 2021.01.18