簡體   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