티스토리 뷰
아이폰에서 사진찍기나 기존 사진을 가져오기 위해서 사용하는 UIImagePickerController라는 클래스가 있습니다.
사용하기도 매우 편하게 만들어져 있는데요.
대부분의 책에서 Deprecated 메소드를 사용한 설명들이 있어 간단하게 정리해보려구 합니다.
이전에 어플 만들어서 올릴 때 보니까 Deprecated 메소드를 사용해 경고는 나오더라도 실행도 잘 되고 문제가 없길래
등록 신청 했더니 바로 Reject 되어 버리더라구요.. -.-
속성(Property) 중에 보면 allowsImageEditing이 있는데요
사진을 가져와서 이동/확대/축소 등을 할 수 있도록 하는 속성입니다.
3.1 SDK 부터는 deprecated 되었고 대신 allowsEditing을 사용해야 합니다.
버튼을 클릭할 때, getCameraPicture라는 IBAction 메소드를 호출한다고 가정해보면 다음과 같이 사용하셔야 합니다.
참고로 sourceType에 보통 3가지를 지정할 수 있는데요. 다음과 같습니다.
UIImagePickerControllerSourceTypeCamer: 카메라로 사진 찍을 수 있도록 설정UIImagePickerControllerSourceTypeSavedPhotosAlbum: 카메라 롤에서 사진을 가져오도록 설정UIImagePickerControllerSourceTypePhotoLibrary: 포토 라이브러리에서 사진을 가져오도록 설정
하지만 이것보다 더 중요한 것은 UIImagePickerControllerDelegate Protocol에 있습니다.
카메라나 포토 라이브러리에서 선택한 이미지를 처리하기 위한 Delegate로 기존에는
"imagePickerController:didFinishPickingImage:editingInfo"를 사용했습니다.
그러나 이 프로토콜 또한 3.0 SDK 부터 Deprecated 되어 다음과 같이 "imagePickerController:didFinishPickingMediaWithInfo"를 사용하셔야 합니다.
즉, Dictionary 타입으로 image를 리턴하고 Key에 따라 값을 가져올 수 있습니다.
위 예제에서는 편집된 이미지를 가져오는 것으로 설정했습니다.
기존의 Deprecated된 Delegate 프로토콜을 사용해 보니 이미지를 가져올 때도 있고, 못 가져올 때도 있었습니다.
이 부분은 반드시 새로 바뀐 것으로 변경하시기 바랍니다.
아이폰 앱으로 다시 개발을 시작하려니 재미는 있는데 쉽지는 않네요.. ^^
앞으로 지속적으로 체크한 내용을 올려보려고 합니다.
<추가정보>
포토 라이브러리는 정상적으로 처리되는데 카메라로 직접 사진을 찍을 경우, 유의할 사항이 있습니다.
사진을 찍는 순간 호출한 ViewController의 ViewDidUnload가 호출됩니다.
즉, 만약 ViewController에 imageView를 두고 여기에 찍은 사진 이미지를 넣을 경우,
반영이 안될 수 있다는 것이죠..
포토 라이브러리를 사용하는 경우에는 ViewDidUnload가 호출되지 않습니다.
즉, 처리하는 방식이 조금 다른 것 같습니다.
아마도 카메라로 사진을 찍을 경우, 새로운 View가 생성되어서 그런 듯 합니다.
그래서 저는 AppDelegate에 UIImage 변수를 하나 두고, 여기에 저장하고
ViewDidLoad에서 이 이미지를 imageView에 로드하는 방식을 선택했습니다.
이렇게 하니 포토 라이브러리나 카메라 사진찍기나 모두 잘 처리 되네요..
참고하시기 바랍니다.
'프로그래밍 > 아이폰' 카테고리의 다른 글
아이폰 앱 판매 중지하기 (0) | 2011.09.19 |
---|---|
모바일 App UI/UX 디자인 가이드.. (0) | 2011.09.19 |
아이폰은 SMS 수신 메시지에 접근할 수가 없네요. -.- (0) | 2011.09.02 |
iPhone 5 Concept Feature 동영상이라는데 실제 가능할까요? (0) | 2011.08.27 |
아이폰 App을 앱스토어 통하지 않고 배포하기 (1) | 2011.08.25 |
댓글
Blog is powered by
Tistory / Designed by
Tistory