2009-11-18 2 views
3

저는 UIImagePickerController, 특히 OS3.1의 새로운 기능을 통해 지난 몇 달 동안 카메라 뷰의 뷰를 오버레이하여 꽤 많이 작업 해 왔습니다. 이것은 잘 작동했습니다.다른 UIView 내에서 UIImagePickerController 표시하기

그러나 저는 현재 프로젝트에서 UIImagePickerController의 카메라보기를 기존보기 내에 표시 할 수 있기를 원합니다. 근본적으로, 내가 지금하고 있었던 것과 정반대의 것.

예를 들어 네비게이션 구성 요소가있는보기 컨트롤러 (그라디언트가있는 위쪽 및 아래쪽 가로 막대 생각)이 막대 중 하나의 단추를 누르면 콘텐츠 영역에 카메라보기가 표시됩니다. 셔터 애니메이션이 올라가고 위쪽 및 아래쪽 탐색 바가 항상 위를 유지합니다.

UIImagePickerController를 창보기에 추가 할뿐 아니라 모달로 표시했지만 행운을 추가하지 않은 채로 하위보기로 추가했습니다.

예 :

[window addSubview:camera.view]; 
[self presentModalViewController:camera animated:YES]; 
+0

: 여기

는 _pickerController은 UIImagePickerController를의 인스턴스 인 예입니다 "중요 : UIImagePickerController를 클래스는 세로 모드를 지원-는 같이하지 않는이 클래스는 사용하기위한 것입니다. 서브 클래 싱을 지원합니다.이 클래스의 뷰 계층 구조는 private이며 수정해서는 안됩니다. "간단합니다. – Fattie

+0

그냥 ** presentViewController **입니다. 모달을 사용하지 마십시오. 그래서, [self presentViewController : ipc animated : 예 완료 : NULL]; – Fattie

답변

0

내가 API가 UIImagePickerController의 실제보기에 직접 액세스를 제공합니다 생각하지 않습니다. 클래스는 실제로 UINavigationController의 하위 클래스이므로 실제 뷰 자체는 아니지만 서브 컨트롤 러 및 뷰의 호출을 관리합니다.

모달로 UIImagePickerController을 호출하면 해당 컨트롤이 하위 뷰로 제어하는보기를 창 (또는 다른보기)에 추가하지 않습니다. 이것이 모달 뷰의 의미입니다. 뷰 계층 구조의 "측면"에 대한 뷰를 표시합니다.

당신이 이것을 함께 해킹 할 수 있다고해도, 나는 애플이 그것을 API의 일부가 아니며 HIG를 위반 한 것으로서 거부 할 것이라고 생각한다.

+1

UIImagePickerController는 뷰 속성이있는 UIViewController의 하위 클래스이므로 다른 UIView의 하위 뷰로 해당 뷰 속성을 사용하는 것이 좋습니다. – jjxtra

2

콜보기 WillAppear :보기에보기를 추가 한 후 이미지 선택기 컨트롤러에서 YES를 누릅니다. 모달 뷰 컨트롤러 비즈니스를 건너 뜁니다.

+0

방금 ​​시도했지만 카메라 뷰가 표시되지만 렌즈가 열리지 않습니다. 렌즈가 닫힌 채 그 그림에 머물러 있습니다. 이것이 여전히 관련 이슈인지 확실하지 않습니다. 다음은 내가 한 일입니다. [self.view addSubview : camera.view]; [camera viewWillAppear : YES]; – u2elan

+0

call viewDidAppear도 마찬가지입니다. – Tony

6

viewWillAppear 및 viewDidAppear을 호출하기 만하면됩니다. DOCO에서

[self.view addSubview:_pickerController.view]; 
[_pickerController viewWillAppear:YES]; 
[_pickerController viewDidAppear:YES]; 
+0

이렇게하면 카메라를 모든 뷰의 하위 뷰로 표시 할 수 있습니다 (렌즈가 열리고 모든 것이 정상입니다). 그러나 시계, 배터리 표시 등이있는 상단의 막대가 사라지고 흰색 막대가됩니다. UIImagePickerController 위쪽 표시 줄을 표시하는 동안 사용할 수없는 것 같아요. – Jano

+0

아니요. 항상 상태 표시 줄을 제거합니다. – jj0b

+0

감사합니다. 방금 [self.pickerForProfilePicture.view removeFromSuperview]를 추가했습니다. – YaBoiSandeep

관련 문제