ios - 如何创建 cameraOverlayView

标签 ios uiimagepickercontroller camera-overlay

我真的很难理解如何做到这一点。我有一个 UIImagePickerController 可以正常工作,但我想创建自己的 CameraOverlayView 以便我可以自定义按钮。我似乎无法弄清楚如何首先创建叠加层。我已经尝试了很多教程并得出了以下结论,但它还有很长的路要走。谁能给我指出一个简单易懂的说明?

  • 我创建了一个使用标准控件的 UIImagePickerController
  • 对于叠加层,我在 Storyboard上创建了一个新的 UIViewController 并将其链接到一个名为 ObViewControllerCameraOverlay 的新类
  • startCameraControllerFromViewController 方法中,我使用以下方法隐藏标准控件

    cameraUI.showsCameraControls=NO;

  • 然后显示 cameraOverlay(无法编译)

    obViewControllerCameraOverlay *overlay = [[obViewControllerCameraOverlay alloc]; cameraUI.cameraOverlayView = 叠加层;

我知道我做错了,但我不知道如何做到这一点。我也看过 Apple 的 PhotoPicker,但我就是不明白。

更新:

我现在在哪里 - 谁能告诉我这是否是正确的过程(我意识到需要对帧大小进行排序并且需要以某种方式添加自定义按钮):

.m 文件,其中“拍照”UIButton 所在的位置。

@property (nonatomic, strong) UIView *overlay;

- (IBAction)takePhoto:(id)sender
{
[self startCameraControllerFromViewController: self usingDelegate: self];
}


- (BOOL) startCameraControllerFromViewController: (UIViewController*) controller usingDelegate: (id <UIImagePickerControllerDelegate, UINavigationControllerDelegate>) delegate
{
if (([UIImagePickerController isSourceTypeAvailable: UIImagePickerControllerSourceTypeCamera] == NO) || (delegate == nil) || (controller == nil)) return NO;
UIImagePickerController *cameraUI = [[UIImagePickerController alloc] init];
cameraUI.sourceType = UIImagePickerControllerSourceTypeCamera;
cameraUI.mediaTypes = [UIImagePickerController availableMediaTypesForSourceType:UIImagePickerControllerCameraCaptureModePhoto];
cameraUI.showsCameraControls=NO;
overlay = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 200, 200)];
cameraUI.cameraOverlayView = overlay;
cameraUI.allowsEditing = NO;
cameraUI.delegate = delegate;
[controller presentViewController:cameraUI animated:YES completion:nil];
return YES;
}

最佳答案

您的 overlay 仅被分配 - 未被初始化。它应该被初始化并且应该正确设置它的框架。

此外:overlayView 应该是 UIView * 类型。如果您想将 UIViewController 作为叠加 View 传递,您只需传递它的 view 属性。

例如:

obViewControllerCameraOverlay *overlay = [storyboard instantiateViewControllerWithIdentifier: @"obViewControllerCameraOverlay"];

cameraUI.cameraOverlayView = overlay.view;

您当然应该根据您的项目和配置更改代码。

关于ios - 如何创建 cameraOverlayView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20594227/

相关文章:

ios - CameraOverlayView 上的按钮不起作用

ios - 如何在 iOS : Memory is never released; potential leak of memory pointed to by 中正确释放内存

ios - 更新 : Image is captured but will not display

ios - 带有用户照片的相机叠加层未保存为已编辑

ios - cameraOverlayView 阻止使用 allowEditing 进行编辑

ios - 如何发送符合 UIImagePickerControllerDelegate、UINavigationControllerDelegate 的 UIViewController

ios - 骨架 Cocoapod Swift 项目

objective-c - 如何在 iOS 核心数据中获取属性数组?

ios - 致命索引错误 ios

cocoa - 是否有适用于 Mac 桌面的 UIImagePicker