在iPhone上运行相机(IOS 7)

时间:2014-06-11 12:36:38

标签: ios iphone ipad ios7

我的代码完全适用于iPad

self.clockInEmployee = nil;
self.clockInEmployee = [[userInfo userInfo] valueForKey:@"employee"];
self.clockInEmployeeRole = [[userInfo userInfo] valueForKey:@"role"];
CLog (@"PIN %@", self.clockInEmployee.pin);

UIImagePickerController *picker = [[UIImagePickerController alloc] init];
picker.delegate = (id)self;
picker.sourceType = UIImagePickerControllerSourceTypeCamera;
picker.showsCameraControls = YES;
picker.cameraDevice = UIImagePickerControllerCameraDeviceFront;
picker.cameraOverlayView = self.cameraOverlay.view;
if (isPhone())
{
    picker.view.frame = CGRectMake(0, 748, 1024, 748);
    [mainNavController.view addSubview:picker.view];
    [UIView animateWithDuration:0.5 animations:^{
        picker.view.frame = CGRectMake(0, 0, 1024, 748);

    } completion:^(BOOL finished){
        [picker viewDidAppear:YES];
    }];
}
modViewController = picker;

但在iPhone试图启动相机时我只观察黑屏。

但是,如果我尝试像那样启动它:

[appPresentingViewController presentViewController:picker animated:YES completion:nil];

它成功启动。但在我的特定项目中,它会导致一些UI问题,因此无法使用。

我该如何制作

if (isPhone())
{
    picker.view.frame = CGRectMake(0, 748, 1024, 748);
    [mainNavController.view addSubview:picker.view];
    [UIView animateWithDuration:0.5 animations:^{
        picker.view.frame = CGRectMake(0, 0, 1024, 748);

    } completion:^(BOOL finished){
        [picker viewDidAppear:YES];
    }];
}

适用于iPad和iPhone吗?

2 个答案:

答案 0 :(得分:0)

请试试这个: -

//create an overlay view instance
OverlayView *overlay = [[OverlayView alloc]
        initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH, SCREEN_HEIGTH)];

//create a new image picker instance
UIImagePickerController *picker =
                [[UIImagePickerController alloc] init];
//set source to video!
picker.sourceType = UIImagePickerControllerSourceTypeCamera;
//hide all controls
picker.showsCameraControls = NO;
picker.navigationBarHidden = YES;
picker.toolbarHidden = YES;
//make the video preview full size
picker.wantsFullScreenLayout = YES;
picker.cameraViewTransform =
CGAffineTransformScale(picker.cameraViewTransform,
            CAMERA_TRANSFORM_X,
            CAMERA_TRANSFORM_Y);
//set our custom overlay view
picker.cameraOverlayView = overlay;

//show picker
[self presentModalViewController:picker animated:YES];

供进一步参考 - here

答案 1 :(得分:0)

您可能希望浏览AVCAM的苹果示例项目here

你需要做的是这样的事情:

AVCaptureSession *avcam = [[AVCaptureSession alloc] init];
    AVCaptureVideoPreviewLayer *previewLayer = 
        [AVCaptureVideoPreviewLayer layerWithSession:avcam];
    previewLayer.frame = self.previewView.bounds; 
   [self.previewView.layer addSublayer:previewLayer];