2016-10-03 6 views
1

正方形のビューコンテナに埋め込まれたUIImagePickerControllerを使用しています。 iOS 8と9ではうまくいきました.iOS 10では、UIImagePickerControllerの内部オブジェクトはカメラピッカーコントローラの全幅に伸びません。 2枚のスクリーンショットを参照してください enter image description hereiOS10 UIImagePickerControllerがChildViewControllerとして埋め込まれ、サブビューが正しく表示されない

enter image description here

ビューインスペクタの選択されたビューである:(UIImagePickerController内側)CAMPreviewView。

- (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]; 
} 

注:ここでは

は、私がサブビューとしてUIImagePickerControllerを埋め込むために使用するコードですaddControls私はどこでも使用私が構築された垂直レイアウトエンジンです。それは自動的にプログラムで制約を作成するので、私はする必要はありません。

私はこれをviewDidLoadで設定します。

私がConstraintsを使用しない場合、同じ問題が発生し、UIImagePickerControllerのフレームを手動で設定します。

ビューインスペクタでは、UIImagePickerControllerが正しく配置されていることを明確に確認できます(コンテナビューの幅と高さ、内部のサブビューは正しくありません)。

また、AVFoundationを直接使用することは、現在の選択肢ではありません。

+0

回避策が見つかりました。私は今親ビューコントローラのself.viewにUIImagePickerControllerを追加します。この問題は、小さなビューに追加しようとしたときにのみ発生していました。自分のフレームよりも小さいビューに拘束しようとすると、拘束ベースの内部画像ピッカーの何かが壊れます。つまり、フルスクリーンになりたい。だから私はそれをself.viewに加え、それを私が望む位置に移動しました:(画面の高さ - 画面の幅)/ 2.0で上にシフトさせてから、それをオーバーレイビューで覆います。 。 – Alex

答えて

0

親ビューコントローラのフレームよりも小さいフレームを持つサブビューにUIImagePickerControllerを埋め込むことができませんでした。そこで、UIImagePickerControllerを格納しているViewコントローラのself.viewにUIImagePickerControllerを埋め込みました。それから、私はそれを必要に応じて上に重ねて送った。また、私のアプリは正方形のビデオで動作するので、一定の量だけフレームを上げてしまいました。だから私は、フレームの大きさよりも小さいフレームを縮めない限り、フレームの一部を可視のスクリーン座標の外に移動するかどうかは気にしません。これを行うと、UIImagePickerController内の内部ビューファインダーのサブビューが予期せずにレイアウトを開始します(カットオフ)。繰り返しますが、この問題はiOS10でのみ発生します。

関連する問題