iOS 调用系统相机和相册

前言

调用相机拍照并获取图片和打开系统相册获取图片是我们经常见到的常用功能。其实这些功能做起来十分简单,几步即可。

第一步,添加权限

在info.plist文件中添加对照相机和相册获取的权限,如下图


第二步,使用UIImagePickerController

初始化UIImagePickerController ,并添加相应设置,如下

@property (strong, nonatomic) UIImagePickerController *picker;
------------------------------------------------------------
self.picker.delegate = self;
self.picker.allowsEditing = YES;
------------------------------------------------------------
- (UIImagePickerController *)picker
{
    if (!_picker) {
        _picker = [[UIImagePickerController alloc]init];
    }
    return _picker;
}
第三步,添加代理

需要添加UIImagePickerControllerDelegate和UINavigationControllerDelegate这两个代理,并在代理中实现相应方法,如下

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary<NSString *,id> *)info
{
//    获取图片
    UIImage *image = info[UIImagePickerControllerOriginalImage];
    self.image.image = image;
//    获取图片后返回
    [picker dismissViewControllerAnimated:YES completion:nil];
}

//按取消按钮时候的功能
- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker
{
//    返回
    [picker dismissViewControllerAnimated:YES completion:nil];
}
最后一步,实现方法

根据不同的需求设置类型即可,如下:

- (IBAction)buttonAction:(UIButton *)sender {
    
    BOOL isPicker = NO;
    
    switch (sender.tag) {
        case 10000:
//            打开相机
            isPicker = true;
//            判断相机是否可用
            if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) {
                self.picker.sourceType = UIImagePickerControllerSourceTypeCamera;
                isPicker = true;
            }
            break;
            
        case 10001:
//            打开相册
            self.picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
            isPicker = true;
            break;
            
        default:
            self.picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
            isPicker = true;
            break;
    }
    
    if (isPicker) {
        [self presentViewController:self.picker animated:YES completion:nil];
    }else {
        UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"错误" message:@"相机不可用" preferredStyle:UIAlertControllerStyleAlert];
        UIAlertAction *action = [UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleCancel handler:nil];
        [alert addAction:action];
        
        [self presentViewController:alert animated:YES completion:nil];
    }
}

希望这篇文章对各位看官有所帮助,Demo下载地址:Demo

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容