我有一个我正在使用的自定义视图控制器,它有一对按钮,一个用于拍照,另一个用于选择照片。当您选择照片时,它会显示相机胶卷没有问题。但是,当您选择拍摄照片时,它仍会显示相机胶卷 - 或照片流或实际相机以外的任何其他内容,即使我使用的是相机功能完美的iPhone。
- (IBAction)getPhoto:(id)sender
{
[self makeUIImagePickerControllerForCamera:NO];
}
- (IBAction)takePhoto:(id)sender
{
[self makeUIImagePickerControllerForCamera:YES];
}
- (void) makeUIImagePickerControllerForCamera:(BOOL)camera
{
UIImagePickerController *picker = [[UIImagePickerController alloc] init];
picker.delegate = self;
if (camera) {
NSLog(@"!!! Show camera");
picker.sourceType = UIImagePickerControllerSourceTypeCamera;
} else {
picker.sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum;
}
[picker setMediaTypes:[NSArray arrayWithObjects:(NSString *) kUTTypeImage, nil]];
[self presentModalViewController: picker animated: YES];
}
上面的代码正是我正在使用的代码。我只是需要让相机实际显示,不知何故。谢谢!
*注意:我使用的是iOS 5和ARC。
答案 0 :(得分:4)
这可能太明显,但只是想确保我们涵盖基础知识。 你是在设备上尝试这个,而不是模拟器正确吗?如果相机应该显示,模拟器将始终只拉起相机胶卷。
答案 1 :(得分:0)
如果您还没有,则应检查以确保相机在当前设备上实际可用。如果不是,则用户不应访问“takePhoto”动作。你可以这样做:
if([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) {
// ... enable camera
} else {
// ... only enable the user to select from their photo album
}