iOS应用程序启动后如何显示实时相机预览?

时间:2016-11-13 23:20:07

标签: ios objective-c camera

我正在关注构建相机应用的教程:https://www.appcoda.com/ios-programming-camera-iphone-app/

这是一个简单的应用程序,带有图像视图和两个按钮,一个用于拍照,另一个用于从设备照片库中选择照片。

所以当我按下拍摄照片按钮时,相机会出现,我可以拍照等等。

但有没有办法在应用程序启动和打开后立即显示实时相机预览而无需先明确按下“拍照”?我将如何在viewDidLoad或其他地方触发?我需要使用AV Foundation吗?

目前我的程序正在使用图像选择器控制器使用此代码向用户显示相机:

- (IBAction)takePhoto:(UIButton *)sender {

        UIImagePickerController *picker = [[UIImagePickerController alloc] init];
        picker.delegate = self;
        picker.allowsEditing = YES;
        picker.sourceType = UIImagePickerControllerSourceTypeCamera;

        [self presentViewController:picker animated:YES completion:NULL];

}

1 个答案:

答案 0 :(得分:0)

很抱歉答案很简短,但是,您需要使用AVFoundation。没有合适的方法可以将UIImagePickerController嵌入到您的视图中。

当然,您可以使用-[UIViewController addChildViewController:]然后将imagePickers视图作为子视图添加到viewController中:

[[self view] addSubview:[pickerVC view]];

[self addChildViewController:pickerVC];
[pickerVC didMoveToParentViewController:self];

但说实话,您最好使用AVFoundation来实现相机,因为上面的方法可能看起来有点" hackish"如今,正如我个人认为的那样。此外,您还需要正确处理自动布局,如果UIImagePickerViewController特别喜欢这样对待,我真的不知道。 请记住,这些组件是为特定用例而构建的,并且用于特殊目的,而不是像UIViewController

这样的通常可子类化的开放式解决方案。