我正在为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中正常运行(在我做了一些调整后)
有人可以解释为什么会这样吗?
答案 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'调用代码,它终于运行了......