【问题标题】:How to add the UIImagePickerController in the custom view?如何在自定义视图中添加 UIImagePickerController?
【发布时间】:2013-11-18 10:19:21
【问题描述】:

如何在视图中添加 UIImagePickerController ?如果我将图像选择器添加到视图中,它会全屏显示。我需要在视图的中心显示,但是 UIImagePickerController 隐藏了导航栏。

如何在视图中添加 UIImagePickerController 并显示导航栏?

我正在使用以下代码,我得到了这样的输出(屏幕截图)。

imagePicker = [[UIImagePickerController alloc] init];
imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera;
imagePicker.cameraCaptureMode = UIImagePickerControllerCameraCaptureModePhoto;
imagePicker.cameraDevice = UIImagePickerControllerCameraDeviceRear;
imagePicker.showsCameraControls     = NO;
imagePicker.navigationBarHidden     = NO;
imagePicker.toolbarHidden           = YES;
imagePicker.wantsFullScreenLayout   = NO;
imagePicker.delegate                = self;
imagePicker.cameraOverlayView       = cameraOverlayView;
[self presentViewController:imagePicker animated:NO completion:nil];

在视图中添加 UIImagePickerController 时,我需要一些来显示导航栏。提前致谢。

【问题讨论】:

    标签: ios iphone objective-c uiimagepickercontroller


    【解决方案1】:

    如果您正在为 iPad 开发应用程序,那么您可以使用 popoverviewcontroller 显示带有导航栏的 imagepickerviewcontroller

    请看链接:

    How to use UIImagePickerController in iPad?

    【讨论】:

    • 不,我的应用程序仅适用于 iPhone。所以我需要在视图中添加 UIImagePickerController 。以及在视图上显示导航栏。
    【解决方案2】:

    使用资产库自定义媒体捕获here 的正确方法。

    简单的方法(在某些情况下)是使用覆盖整个屏幕的框架大小的视图,并在该视图上添加模拟导航栏的控件。

        if (_pickerOverlay == nil) {
        _pickerOverlay = [[UIView alloc] initWithFrame:self.view.bounds];
        //red transparent tint for demo
        _pickerOverlay.backgroundColor = [UIColor colorWithRed:1.0
                                                         green:0.0
                                                          blue:0.0 alpha:0.6];
    
        UIButton *btnBack = [UIButton buttonWithType:UIButtonTypeSystem];
        btnBack.frame = CGRectMake(20, 20, 250, 40);
        [btnBack setTitle:@"Custom buttom" forState:UIControlStateNormal];
        btnBack.backgroundColor = [UIColor whiteColor];
        [_pickerOverlay addSubview:btnBack];
    }
    
    UIImagePickerController *picker = [[UIImagePickerController alloc] init];
    picker.sourceType = UIImagePickerControllerSourceTypeCamera;
    picker.showsCameraControls = NO;
    picker.cameraOverlayView = _pickerOverlay;
    
    [self presentViewController:picker animated:YES completion:nil];
    

    【讨论】:

    • 谢谢。我需要,如何设置 cameraOverlayView 的框架?因为相机视图从顶部边缘开始(无导航,状态栏)。我不想这样,我需要如何用 cameraOverlayView 显示导航栏?请提出您的建议。
    • @Mani 在您的情况下,您应该创建自定义视图控制器并使用 AV Foundation 库获取媒体捕获功能。文档here
    猜你喜欢
    • 2011-09-13
    • 1970-01-01
    • 1970-01-01
    • 2023-04-06
    • 1970-01-01
    • 2013-01-31
    • 1970-01-01
    • 1970-01-01
    • 2012-05-10
    相关资源
    最近更新 更多