UIImagePickerController使用教程

作者:Nicky2024.01.18 10:15浏览量:8

简介:本文将介绍如何使用UIImagePickerController从相机、相册或图库获取媒体,并定制相机界面。

UIImagePickerController是一个非常实用的控制器,它可以帮助我们从相机、相册或图库获取媒体。以下是如何使用UIImagePickerController的详细教程。
一、导入头文件
在你的ViewController中引入这两个协议:

  1. #import <UIKit/UIKit.h>
  2. #import <Photos/Photos.h>

并且在.h文件中添加一个UIImagePickerController对象:

  1. @interface YourViewController : UIViewController <UIImagePickerControllerDelegate, UINavigationControllerDelegate>
  2. @property (nonatomic, strong) UIImagePickerController *imagePicker;
  3. @end

二、基本使用

  1. 从相册获取媒体
    从当前页面进入媒体选择页面:
    1. if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary]) {
    2. UIImagePickerController *imagePickerVC = [[UIImagePickerController alloc] init];
    3. imagePickerVC.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
    4. imagePickerVC.delegate = self;
    5. [self presentViewController:imagePickerVC animated:YES completion:nil];
    6. }
    在用户选择了一张照片后,我们需要实现UIImagePickerControllerDelegate协议中的imagePickerController:didFinishPickingMediaWithInfo:方法来获取用户选择的照片:
    ```objective
  • (void)imagePickerController:(UIImagePickerController )picker didFinishPickingMediaWithInfo:(NSDictionary )info {
    UIImage *chosenImage = info[UIImagePickerControllerEditedImage];
    // 在这里使用选择的图片
    [self dismissViewControllerAnimated:YES completion:nil];
    }
    ```
  1. 从相机获取媒体
    首先,我们需要检查相机是否可用:
    1. if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) {
    2. UIImagePickerController *imagePickerVC = [[UIImagePickerController alloc] init];
    3. imagePickerVC.sourceType = UIImagePickerControllerSourceTypeCamera;
    4. imagePickerVC.delegate = self;
    5. [self presentViewController:imagePickerVC animated:YES completion:nil];
    6. }
    同样,在用户拍完照片后,我们需要实现UIImagePickerControllerDelegate协议中的imagePickerController:didFinishPickingMediaWithInfo:方法来获取用户拍摄的照片:
    ```objective
  • (void)imagePickerController:(UIImagePickerController )picker didFinishPickingMediaWithInfo:(NSDictionary )info {
    UIImage *chosenImage = info[UIImagePickerControllerOriginalImage];
    // 在这里使用拍摄的图片
    [self dismissViewControllerAnimated:YES completion:nil];
    }
    ```
  1. 定制相机界面
    如果你想定制相机界面,你可以通过设置cameraCaptureModecameraDevice属性来实现。例如,如果你想让相机以正方形模式拍照,你可以这样做:
    1. imagePickerVC.cameraCaptureMode = UIImagePickerControllerCameraCaptureModeSquare;
    如果你想指定相机设备(前置或后置),你可以这样做:
    1. imagePickerVC.cameraDevice = UIImagePickerControllerCameraDeviceRear;