0

有没有办法只用 iPhone 拍照?

(没有代表或控制器)。

其实我想要的是:

1 一个显示相机所见内容的视图,

2)一个拍照的按钮。(就像调用一个函数并取回照片一样)

补充:上面的“视图”是普通屏幕中的一个区域,也是按钮

这会是 AVFoundation。

谢谢

4

2 回答 2

2

如果您只是想使用相机,那么 AVFoundation 框架就太过分了,它更适用于声音和电影。基本的相机方法都在 UIKit 框架中。如果您尝试编辑图像,则 AVFramework 不是您所需要的。

此外,您不能拥有没有委托或控制器的应用程序。这就是应用程序的制作方式。没有他们,你什么都做不了。有关详细信息,请参阅Apple View Controller 编程指南

就像 falconcreek 所说,您需要使用 UIImagePickerController 并设置 UIImagePickerDelegate 以在应用程序中使用相机。

问题:你想用相机应用程序无法工作的这些图像做什么?

于 2010-08-31T14:13:28.793 回答
0

只需将以下代码复制并粘贴到您的项目中即可获得完全实现的功能。

其中takePhotochooseFromLibrary 是我自己的方法名称,将在按钮触摸时调用。和

因此,请确保将相应按钮的插座引用到这些方法。

希望它会有所帮助:)

   -(IBAction)takePhoto
{
        UIImagePickerController *imagePickerController = [[UIImagePickerController alloc] init];

        if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera])
        {
            [imagePickerController setSourceType:UIImagePickerControllerSourceTypeCamera];
        }

        // image picker needs a delegate,
        [imagePickerController setDelegate:self];

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



-(IBAction)chooseFromLibrary
{

    UIImagePickerController *imagePickerController= [[UIImagePickerController alloc]init]; 
    [imagePickerController setSourceType:UIImagePickerControllerSourceTypePhotoLibrary];

    // image picker needs a delegate so we can respond to its messages
    [imagePickerController setDelegate:self];

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

}

//delegate methode will be called after picking photo either from camera or library
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{   
    [self dismissModalViewControllerAnimated:YES]; 
    UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage];

    [myImageView setImage:image];    // "myImageView" name of any UImageView.
}
于 2012-09-10T12:01:51.990 回答