2016-10-03 7 views
1

사각형보기 컨테이너에 포함 된 UIImagePickerController를 사용하고 있습니다. iOS 8 및 9에서는 정상적으로 작동합니다. iOS 10에서는 UIImagePickerController의 내부 객체가 카메라 선택기 컨트롤러의 전체 너비까지 늘어나지 않습니다. 2 개 스크린 샷을 참조하십시오 enter image description hereiOS10 UIImagePickerController ChildViewController로 임베드되어 서브 뷰를 올바르게 표시하지 않습니다.

enter image description here

뷰 관리자에서 선택한보기는 다음과 같습니다 (UIImagePickerController를 내부) CAMPreviewView. 여기

은 서브 뷰로 UIImagePickerController를을 삽입하는 내가 사용하는 코드입니다 :

- (void) presentCameraInWindow { 
[self addChildViewController:self.videoRecorder]; 

[self.cameraHolder 
    addControls:@[self.videoRecorder.view] 
    align:VerticalAlignStretchToFullHeight 
    withHeight:self.view.bounds.size.width 
    verticalPadding: 0.0f 
    horizontalPadding:0.0f]; 

[[self.videoRecorder view] setNeedsLayout]; 
[self.view layoutIfNeeded]; 
[self.videoRecorder didMoveToParentViewController:self]; 
} 

참고 : addControls 내가 모든 곳에서 사용할 내가 만든 수직 레이아웃 엔진입니다. 프로그래밍 방식으로 제약 조건을 자동으로 생성하므로 필요하지 않습니다.

이 설정은 viewDidLoad에서 호출합니다.

Constraints를 사용하지 않으면 동일한 문제가 발생하며 UIImagePickerController 프레임을 수동으로 설정합니다.

뷰 관리자에서 UIImagePickerController가 올바르게 배치되어 있는지 (컨테이너 뷰의 전체 너비와 높이까지만 표시되지만 내부 서브 뷰는 그렇지 않음) 명확하게 볼 수 있습니다.

기타 : 노력으로 인해 AVFoundation을 직접 사용할 수있는 옵션이 없습니다.

+0

해결 방법이 있습니다. 이제 UIImagePickerController를 부모 뷰 컨트롤러의 self.view에 추가합니다. 이 문제는 작은보기에 추가하려고 할 때만 발생했습니다. 제약 조건 기반 내부 이미지 선택기는 자체 프레임보다 작은보기에 집어 넣을 때 끊어집니다. 즉, 전체 화면이되고 싶습니다. 그래서 self.view에 추가 한 다음 원하는 위치로 옮겼습니다. (화면 높이 - 화면 너비/2.0으로 위로 이동 한 다음) 오버레이보기로 덮었습니다. . – Alex

답변

0

부모보기 컨트롤러의 프레임보다 작은 프레임이있는 하위보기에 UIImagePickerController를 포함 할 수 없습니다. 그래서 UIImagePickerController를 포함하는 View 컨트롤러의 self.view에 UIImagePickerController를 포함 시켰습니다. 그 다음 나는 그것을 뒤로 보냈다, 필요에 따라 그것의 위에 오버레이를 두었다. 내 앱이 정사각형 비디오로 작동하기 때문에 일정량만큼 프레임이 올라갔습니다. 따라서 프레임 크기를 원하는 크기보다 작게 만들지 않는 한, 프레임을 부분적으로 보이는 화면 좌표 밖으로 이동해도 상관 없습니다. 그렇게하면 UIImagePickerController 내부의 뷰 파인더 하위 뷰가 예기치 않게 레이아웃이 시작됩니다 (잘림). 다시,이 문제는 iOS10에서만 발생합니다.

관련 문제