我真的很难理解如何做到这一点。我有一个 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/