【问题标题】:cameraOverlayView from xib来自xib的cameraOverlayView
【发布时间】:2025-11-27 22:30:02
【问题描述】:

我一直在寻找一段时间,似乎无法找到一个明确的方法来做到这一点。我找到的任何链接都已过时。我正在展示这样的相机

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.


    //Get the camera
    self.imagePicker = [[UIImagePickerController alloc] init];
    self.imagePicker.delegate = self;
    self.imagePicker.allowsEditing = NO;
    self.imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera;
    self.imagePicker.mediaTypes = [UIImagePickerController availableMediaTypesForSourceType:self.imagePicker.sourceType];
    self.imagePicker.showsCameraControls = NO;
    self.imagePicker.wantsFullScreenLayout = YES; //<-- This does not work in iOS7


    //set our custom overlay view


    [self presentViewController:self.imagePicker animated:NO completion:nil];

}

我有一个 ViewController 连接到一个名为 ControllsViewController 的 xib。我不知道如何将其分配给 self.imagePicker.cameraOverlayView = 。有人可以帮我吗?

【问题讨论】:

    标签: ios xcode uiimagepickercontroller


    【解决方案1】:

    您需要使用 xib 实例化 ControllsViewController。假设您的主包中有一个名为“ControllsViewController”的 xib 文件:

    ControllsViewController *overlayViewController = [ControllsViewController alloc] initWithNibName:@"ControllsViewController" bundle:nil];
    self.imagePicker.cameraOverlayView = overlayViewController.view;
    

    您可能希望将 overlayViewController 分配给一个属性以保留它。

    【讨论】:

    • 这很完美!!我浪费了几个小时试图完成这件事。谢谢。你知道有什么资源可以让新视图中的按钮拍照吗?
    • UIImagePickerController 有一个实例方法takePicture 可以用来拍照。剩下要做的就是将它连接到ControllsViewController。您可以使用ControllsViewController 上的属性来执行此操作,或者通过您的主视图控制器使用委托来执行此操作。