代码改变世界

IOS 调用系统照相机和相册

2016-09-28 15:35  xiangjune  阅读(6458)  评论(0编辑  收藏  举报

 

/**

 *  调用照相机

 */

- (void)openCamera

{

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

    picker.delegate = self;

    picker.allowsEditing = YES; //可编辑

    //判断是否可以打开照相机

    if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera])

    {

        //摄像头

        picker.sourceType = UIImagePickerControllerSourceTypeCamera;

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

    }

    else

    {

        NSLog(@"没有摄像头");

    }

}

 

/**

 *  打开相册

 */

-(void)openPhotoLibrary

{

    // Supported orientations has no common orientation with the application, and [PUUIAlbumListViewController shouldAutorotate] is returning YES

    

    // 进入相册

    if([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary])

    {

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

        imagePicker.allowsEditing = YES;

        imagePicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;

        imagePicker.delegate = self;

        [self presentViewController:imagePicker animated:YES completion:^{

            NSLog(@"打开相册");

        }];

    }

    else

    {

        NSLog(@"不能打开相册");

    }

}

 

#pragma mark - UIImagePickerControllerDelegate

// 拍照完成回调

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)image editingInfo:(nullable NSDictionary<NSString *,id> *)editingInfo NS_DEPRECATED_IOS(2_0, 3_0)

{

    NSLog(@"finish..");

    

    if(picker.sourceType == UIImagePickerControllerSourceTypeCamera)

    {

        //图片存入相册

        UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil);

    }

    

    [self dismissViewControllerAnimated:YES completion:nil];

}

//进入拍摄页面点击取消按钮

- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker

{

    [self dismissViewControllerAnimated:YES completion:nil];

}