【问题标题】:Running camera on iPhone (OS 7)在 iPhone (OS 7) 上运行相机
【发布时间】:2014-06-11 12:36:37
【问题描述】:

我的代码可以在 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 吗?

【问题讨论】:

    标签: ios iphone ipad ios7


    【解决方案1】:

    请试试这个:-

    //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

    【讨论】:

      【解决方案2】:

      你可以浏览一下 AVCAM 的 apples sample project 可以找到here

      你需要做的是这样的:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-04-10
        • 2011-03-15
        • 1970-01-01
        • 1970-01-01
        • 2013-10-06
        相关资源
        最近更新 更多