1、添加权限与描述
2、代码
#import "ViewController.h"
@interface ViewController () <UIImagePickerControllerDelegate, UINavigationControllerDelegate>
@property (nonatomic, strong) UIImageView *imageView;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// 创建显示照片的imageView
self.imageView = [[UIImageView alloc] initWithFrame:CGRectMake(50, 100, 200, 200)];
[self.view addSubview:self.imageView];
// 创建拍照按钮
UIButton *takePhotoButton = [UIButton buttonWithType:UIButtonTypeSystem];
[takePhotoButton setTitle:@"拍照" forState:UIControlStateNormal];
takePhotoButton.frame = CGRectMake(50, 350, 100, 50);
[takePhotoButton addTarget:self action:@selector(takePhoto) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:takePhotoButton];
}
- (void)takePhoto {
// 检查相机是否可用
if (![UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) {
UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"Error" message:@"相机不可用" preferredStyle:UIAlertControllerStyleAlert];
[alert addAction:[UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:nil]];
[self presentViewController:alert animated:YES completion:nil];
return;
}
// 创建 UIImagePickerController
UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];
imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera;
imagePicker.delegate = self;
[self presentViewController:imagePicker animated:YES completion:nil];
}
// 拍照完成后调用的代理方法
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary<UIImagePickerControllerInfoKey, id> *)info {
UIImage *selectedImage = info[UIImagePickerControllerOriginalImage];
self.imageView.image = selectedImage;
[picker dismissViewControllerAnimated:YES completion:nil];
}
// 用户取消拍照时调用的代理方法
- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker {
[picker dismissViewControllerAnimated:YES completion:nil];
}
@end