繁体   English   中英

带有cameraOverlayView的UIImagePickerController-放错视图

[英]UIImagePickerController with cameraOverlayView - misplaced views

我有一个带有自定义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:^{

}];

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

经过一番调查,似乎没有为OverlayViewController调用viewWillAppearviewDidAppear

但是,如果我从模式“自定义图库视图控制器”返回到imagePicker,则会调用这些方法。

即:rootVC->(无呼叫)-> imagePicker-> customGalleryVc customGalleryVc(关闭模式)->(对willAppear的调用)-> imagePicker

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

谢谢!

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

该代码段的第一行仅实例化了VC。 访问VC的view属性时,将加载其视图(在IB中定义)。 仅此而已,什么都没有发生。

因此,建议不要为自定义叠加层使用视图控制器。 您只需要一个普通的UIView。 使用IB,您可以在xib中创建叠加层,也可以在情节提要中将UIView对象拖到当前VC的Dock(如果添加任何手势识别器,则场景出现的场景的顶部)中,然后可以引用它们通过创建IBOutlet。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM