Ios 带cameraOverlayView的UIImagePickerController-错位视图

Ios 带cameraOverlayView的UIImagePickerController-错位视图,ios,autolayout,Ios,Autolayout,我有一个带有自定义cameraOverlayView的UIImagePickerController 我创建的imagePicker如下所示: self.overlay = [self.storyboard instantiateViewControllerWithIdentifier:@"OverlayViewController"]; self.picker = [[UIImagePickerController alloc] init]; self.picker.sourceType =

我有一个带有自定义cameraOverlayView的
UIImagePickerController

我创建的imagePicker如下所示:

self.overlay = [self.storyboard instantiateViewControllerWithIdentifier:@"OverlayViewController"];
self.picker = [[UIImagePickerController alloc] init];
self.picker.sourceType = UIImagePickerControllerSourceTypeCamera;
self.picker.cameraCaptureMode = UIImagePickerControllerCameraCaptureModePhoto;
self.picker.cameraDevice = UIImagePickerControllerCameraDeviceRear;
self.picker.showsCameraControls = NO;

// Insert the overlay
self.picker.cameraOverlayView = self.overlay.view;
self.overlay.pickerReference = self.picker;

self.picker.edgesForExtendedLayout = UIRectEdgeAll;
self.picker.extendedLayoutIncludesOpaqueBars = YES;

self.picker.delegate = self.overlay;


[self presentViewController:self.picker animated:NO completion:^{

}];
由于某些原因,OverlyViewController的视图放错了位置。似乎还没有计算出约束条件。但是,如果我显式调用
[self.overlay view将出现:NO]在完成块中,它们的布局似乎正确渲染

经过一些调查,似乎
视图将出现
,并且
覆盖视图控制器
未调用
视图显示

但是,如果我从模式“custom gallery viewcontroller”返回imagePicker,则会调用这些方法

即: rootVC->(无调用)->imagePicker->customGalleryVc customGalleryVc(解除模式)->(调用WillAspect)->imagePicker

这是什么?我是否缺少视图层次结构的基础知识


谢谢大家!

仅当视图控制器添加到视图控制器层次结构中时,才会调用视图控制器生命周期方法

代码段的第一行仅实例化了VC。当您访问VC的view属性时,它的视图(您在IB中定义)被加载。仅此而已,没有其他事情发生


因此,建议您无需为自定义覆盖使用视图控制器。你只需要一个普通的UIView。使用IB,您可以在xib中创建覆盖,或者在故事板中将UIView对象拖动到当前VC的dock(如果添加了任何手势识别器,则会出现在场景的顶部栏)中,然后您可以通过创建IBOutlet来引用它们。

请参阅更新的问题,当我从另一个模态视图控制器返回imagePicker时,会调用lifecycle方法。@Spoek我猜您是从覆盖VC中的一个控件展示了gallery VC。如果是这样,我认为系统可能会在某个时候将覆盖VC添加到VC层次结构中,因此当您返回时,它的生命周期称为正常生命周期。无论如何,这不是正确的方法
UIImagePickerController
只需要一个独立的UIView作为其自定义覆盖,而不是来自其他地方的视图。