我正在使用嵌入方形视图容器中的UIImagePickerController。它在iOS 8和9上运行良好。在iOS 10上,UIImagePickerController的内部对象不会拉伸到摄像机选取器控制器的整个宽度。看2个截图:
视图检查器中的选定视图是:CAMPreviewView(在UIImagePickerController内)。
以下是我用于将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 :(得分:0)
我无法将UIImagePickerController嵌入到子视图中,该子视图的帧比父视图控制器的帧小。所以我将UIImagePickerController嵌入到容纳它的View控制器的self.view中。然后我把它发回去,根据需要在它上面叠加。由于我的应用程序使用方形视频,因此我最终也将其框架向上移动了一定量。因此,如果我将其框架部分地移动到可见屏幕坐标之外,我不会介意,只要我不尝试将其框架压缩到小于它想要的尺寸。如果我这样做,那么UIImagePickerController内部的取景器子视图会开始意外地布局(切断)。同样,此问题仅在iOS10上发生。