在相机模式下启动iPhone应用程序只显示一个空白屏幕

时间:2012-02-22 14:22:03

标签: iphone ios camera

我正在为iPhone创建一个应用程序,它应该以相机模式启动(顶部有自定义布局,但稍后会出现)。我已经创建了这个应用程序的一个版本,我按下一个按钮,这样我就可以从iPhone相册中选择一张照片或者拍一张新照片。

尝试在不同的代码中使用相同的代码失败。

最初我有一个功能'takePicture',我曾经用它启动相机

- (void)takePicture
{   
    isInCaptureMode = YES;

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

    imagePicker.mediaTypes =
    [UIImagePickerController availableMediaTypesForSourceType:
     UIImagePickerControllerSourceTypeCamera];

    [imagePicker setSourceType:UIImagePickerControllerSourceTypeCamera];

    imagePicker.videoQuality = UIImagePickerControllerQualityTypeMedium;

    // set delegate
    [imagePicker setDelegate:self];

    // Place image picker on the screen
    [self presentModalViewController:imagePicker animated:YES];

    [imagePicker release];
}

所以我想我自己“我可以创建一个单独的视图应用程序,将此代码抛入视图控制器的viewDidLoad函数并将其用作起点”。但是,唉,我一直被困在那里。当我这样做时,应用程序启动并且(如果设备有摄像头)屏幕变成黑色空白,如果设备没有摄像头(iPad或模拟器),应用程序崩溃。

我最初使用Xcode 3创建了应用程序,但现在已经迁移到4.2,原始应用程序在4.2中正常运行(在我做了一些调整后)

有人可以解释为什么会这样吗?

2 个答案:

答案 0 :(得分:1)

您可以尝试以下代码来查看会发生什么吗?

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

if ([UIImagePickerController isSourceTypeAvailable: UIImagePickerControllerSourceTypeCamera]) {
  picker.sourceType = UIImagePickerControllerSourceTypeCamera;
} else {
  //you can get picture from Library is there is no camera 
  picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
}

picker.delegate = self;
[self presentModalViewController:picker animated:YES];

[picker release];

答案 1 :(得分:0)

所以,就像我在评论中说的那样。一旦我从'viewDidAppear'而不是'viewDidLoad'调用代码,它终于运行了......