![](/img/trans.png)
[英]Using cameraOverlayView with 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
調用viewWillAppear
和viewDidAppear
。
但是,如果我從模式“自定義圖庫視圖控制器”返回到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.