美文网首页
iOS开发-调用系统相机和相册获取照片

iOS开发-调用系统相机和相册获取照片

作者: Mr在水一方 | 来源:发表于2017-09-06 17:20 被阅读0次

-(void)addGes{    //创建点按手势  

  UITapGestureRecognizer *tapGes = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapGes:)];    

//手势也可以设置代理  

  tapGes.delegate = self;   

 //添加手势   

 [self.imageView addGestureRecognizer:tapGes];    

    }

// 调用

- (IBAction)tapGes:(UITapGestureRecognizer *)tapges {  

  [self uploadImage];

}

- (void)uploadImage {   

 // 创建并弹出警示框, 选择获取图片的方式(相册和通过相机拍照)   

 UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"获取图片"                                                                            message:@"请选择方式"    preferredStyle:UIAlertControllerStyleActionSheet];        

UIAlertAction *camera = [UIAlertAction actionWithTitle:@"相机"       style:UIAlertActionStyleDefault                                                  handler:^(UIAlertAction * _Nonnull action) {   

 [self readImageFromCamera];                       

                           }];  

  UIAlertAction *album = [UIAlertAction actionWithTitle:@"相册"          style:UIAlertActionStyleDefault                                                  handler:^(UIAlertAction * _Nonnull action) { 

                                                     [self readImageFromAlbum];      

                                           }];  

  UIAlertAction *cancel = [UIAlertAction actionWithTitle:@"取消"         style:UIAlertActionStyleCancel                                                  handler:nil];   

 [alertController addAction:camera]; 

  [alertController addAction:album];    

  [alertController addAction:cancel];     

  [self presentViewController: alertController animated:YES completion:nil];}

// 从相册中读取照片

- (void)readImageFromAlbum {  

 UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];    // 创建一个UIImagePickerController对象            imagePicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;    // 选择资源类型为相册     

   // 指定代理,代理需服从,协议   

 imagePicker.delegate = self;     

   imagePicker.allowsEditing = YES;    // 是否允许用户编辑      

  [self presentViewController:imagePicker animated:YES completion:nil];  // 展示相册

}

// 拍照

- (void)readImageFromCamera {  

      // 判断选择的模式是否为相机模式,如果没有则弹窗警告  

  if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) {  

              UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];     

           imagePicker.allowsEditing = YES;    // 允许编辑          

      imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera;     

           imagePicker.delegate = self;           

     [self presentViewController:imagePicker animated:YES completion:nil];        

    } else {     

   // 未检测到摄像头弹出窗口        UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"警告"                                                                      message:@"未检测到摄像头"                                                                preferredStyle:UIAlertControllerStyleAlert];          

      UIAlertAction *confirm = [UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleDefault handler:nil];        

        [alert addAction:confirm];        

        [self presentViewController:alert animated:YES completion:nil];      

      } 

   }

#pragma mark// 图片编辑完成之后触发的方法

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)image editingInfo:(NSDictionary *)editingInfo {

// 1. 让image显示在界面上即可

self.imageView.image = image;

//图片存入相册

if(picker.sourceType == UIImagePickerControllerSourceTypeCamera){

UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil);

}

[self dismissViewControllerAnimated:YES completion:nil];

}

相关文章

网友评论

      本文标题:iOS开发-调用系统相机和相册获取照片

      本文链接:https://www.haomeiwen.com/subject/yfsvjxtx.html