UIImagePickerController的cameraOverlayView立即消失

时间:2017-05-22 10:09:59

标签: ios objective-c uiimagepickercontroller uistoryboard uistoryboardsegue

我的故事板包含一个CameraViewController,我在其中设计了自定义叠加视图。 只要我将它用作我的UITabbarController的一个选项卡,就可以看到cameraOverlayView。但是,如果我从任何其他VC转移到此视图控制器,叠加视图仅在几分之一秒内可见,则只有预览图像可见。

@implementation CameraViewController 

- (void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];

    UIImagePickerController *picker = [UIImagePickerController new];
    if (![UIImagePickerController isSourceTypeAvailable: UIImagePickerControllerSourceTypeCamera]) return;
    picker.delegate = self;
    picker.sourceType = UIImagePickerControllerSourceTypeCamera;
    picker.showsCameraControls = NO;
    picker.allowsEditing = NO;
    picker.cameraOverlayView = self.view;

    [self presentViewController:picker animated:YES completion:nil];
}

我尝试了任何segue类型,演示样式等,问题保持不变。

我在viewDidDisappear中插入了一些日志,并注意到这个函数实际上被调用了,我想这就是叠加层消失的原因。

请记住:如果我只打开Tabbarcontroller的标签,一切都运行正常!只有当我转到CameraVC时才会出现问题。

提前致谢!

1 个答案:

答案 0 :(得分:0)

解决方案是选择模态演示样式和"过度上下文",因为那时不会触发viewDidDisappear事件。