gpt4 book ai didi

ios - 使用 UIImagePickerController 使 UIView 显示相机 View

转载 作者:行者123 更新时间:2023-12-01 19:11:12 26 4
gpt4 key购买 nike

我正在尝试将相机看到的图像显示到我自己的自定义 View 中。我不想为 UIImagePickerController 使用 Apple 自己的覆盖属性:cameraOverlayView。

我不想要叠加层,而是让它只显示在我的特定 View 中。我能够做到这一点的唯一方法是在我的 UIView 中创建一个 subview ,但是这样做不允许我使用我在 UIView 上制作的任何我自己的自定义按钮。到目前为止,我的代码是:

UIImagePickerController *imagePickerController = [[UIImagePickerController alloc] init];

[imagePickerController setSourceType:UIImagePickerControllerSourceTypeCamera];
[imagePickerController setShowsCameraControls:NO];
[imagePickerController setEditing:NO];
[imagePickerController setNavigationBarHidden:YES];

[self.videoPreviewView addSubview:[imagePickerController view]];
[imagePickerController viewWillAppear:YES];

videoPreviewView 是我的 UIView 的导出!

有什么建议么?谢谢!

最佳答案

我自己没有尝试过你的方式,但我也想创建一个自定义的相机 View 。这可能不是您想要的,但它是一种替代方法。我与 .xib 文件一起创建了一个自定义 UIView。

在 .m 文件中,您只需将适当的委托(delegate)方法调用到您实例化 imagePicker 的 ViewController。然后在这个 ViewController 中调用适当的方法,如 takePicture .

这样,您可以使用 xib 文件使覆盖看起来像您喜欢的任何方式。您可以实例化图像选择器

    FALKCameraView.h :

@protocol CameraViewDelegate <NSObject>

- (void)cameraPressed;

- (void)buttonPressed;
//etc


@end

@interface FALKCameraView : UIView

@property (nonatomic, assign) NSObject<CameraViewDelegate> *delegate;

//Camera Button pressed- notifies CameraViewDelegate
- (IBAction)cameraPressed:(id)sender;
//Button pressed - notifies CameraViewDelegate
-(IBAction)buttonPressed:(id)sender;


@end

FALKCameraView.m:

@implementation FALKCameraView

@synthesize delegate;

- (IBAction)cameraPressed:(id)sender{
[delegate cameraPressed];
}

-(IBAction)buttonnPressed:(id)sender{
[delegate buttonPressed];
}


@end


FALKCameraViewController.h:

@interface FALKCameraViewController : UIViewController <UIImagePickerControllerDelegate, CameraViewDelegate>

- (void)cameraPressed;

- (void)buttonPressed;

@end


FALKCameraViewController.m:

@interface FALKCameraViewController
@property (strong,nonatomic) UIImagePickerController *imagePicker;
@end

@implementation FALKCameraViewController
@synthesise imagePicker;

-(void)setUpCamera{
if ([UIImagePickerController isSourceTypeAvailable:
UIImagePickerControllerSourceTypeCamera]){
imagePicker = [[UIImagePickerController alloc] init];
imagePicker.delegate = self;
imagePicker.sourceType =
UIImagePickerControllerSourceTypeCamera;
imagePicker.showsCameraControls = NO;
imagePicker.allowsEditing = NO;


imagePicker.mediaTypes = @[(NSString *) kUTTypeImage];



NSString *nibName = @"FALKCameraView";

NSArray *nibs = [[NSBundle mainBundle] loadNibNamed:nibName
owner:nil
options:nil];
if([nibs count]){
id nib = [nibs objectAtIndex:0];
if([nib isKindOfClass:[FALKCameraView class]]){
FALKCameraView *view = (FALKCameraView*)nib;
view.delegate = self;
imagePicker.cameraOverlayView = view;
}
}

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



-(void)cameraPressed:(id)sender{
[imagePicker takePicture];
}

@end

关于ios - 使用 UIImagePickerController 使 UIView 显示相机 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16477844/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com