如何使用UIImagePickerController只显示相机而不拍照?

时间:2010-04-08 14:32:34

标签: objective-c iphone xcode iphone-sdk-3.0 uiimagepickercontroller

我想知道如何在预定义的帧(而不是整个屏幕)内打开相机。当视图加载时,我有一个盒子,在里面,我想显示相机看到的内容。我不想拍照,只是基本上使用相机作为取景器。我搜索了这个网站,还没有找到我正在寻找的东西。请帮忙。

谢谢!
托马斯

更新1:

这是我到目前为止所尝试的内容。

1。)我将UIImageView添加到我的xib中 2.)将以下插座连接到IB中的UIImageView

IBOutlet UIImageView * cameraWindow;

3.)我将以下代码放在 viewWillAppear

-(void)viewWillAppear:(BOOL)animated
{
 [super viewWillAppear:animated];
 UIImagePickerController *picker = [[UIImagePickerController alloc] init];
 picker.delegate = self;

 picker.sourceType = UIImagePickerControllerSourceTypeCamera;
 [self presentModalViewController:picker animated:YES];

 NSLog(@"viewWillAppear ran");
}

但是这个方法没有运行,因为我的控制台缺少NSLog语句。请帮忙!

谢谢,
托马斯


更新2:

好的,我把代码放在 viewDidLoad 中运行,但我的相机仍然没有出现......有什么建议吗?任何人....?我一直在阅读UIImagePickerController class reference,但我不确定如何理解它。我还在学习iPhone,所以这有点挣扎。请帮忙!

- (void)viewDidLoad 
{ 
 [super viewDidLoad]; 

 // Create a bool variable "camera" and call isSourceTypeAvailable to see if camera exists on device
 BOOL camera = [UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera];

 // If there is a camera, then display the world throught the viewfinder
 if(camera)
 { 
  UIImagePickerController *picker = [[UIImagePickerController alloc] init];

  // Since I'm not actually taking a picture, is a delegate function necessary?
  picker.delegate = self;

  picker.sourceType = UIImagePickerControllerSourceTypeCamera;
  [self presentModalViewController:picker animated:YES];

  NSLog(@"Camera is available");
 }

 // Otherwise, do nothing.
 else 
  NSLog(@"No camera available");
}

谢谢!
托马斯


更新3:

A-HA!在Apple Class Reference上找到了这个。

  

讨论

     

代表收到通知   当用户选择图像或电影时,   或退出选择器界面。该   代表还决定何时解雇   选择器界面,所以你必须   提供代表使用选择器。如果   这个属性是零,选择器是   如果你试图立即解雇   展示它。

现在就和代表一起玩吧。然后我要读一下代表的wtf。向后?无论如何:-p


更新4:

该类的两个委托函数是 - imagePickerController:didFinishPickingMediaWithInfo: - imagePickerControllerDidCancel:

因为我实际上并不想选择图像或给用户取消选项,所以我只是定义方法。他们永远不应该跑......我想。

1 个答案:

答案 0 :(得分:0)

添加

  

[拾取器   dismissModelViewControllerAnimated:YES];

委派方法主体。

它会驳回观点。