UIImagePickerController 图片选择视图控制器

前言

  • Objective-C

    1
    NS_CLASS_AVAILABLE_IOS(2_0) @interface UIImagePickerController : UINavigationController <NSCoding>
  • Swift

    1
    @available(iOS 2.0, *) public class UIImagePickerController : UINavigationController, NSCoding
  • iOS 获取图片有三种方法:

    • 直接调用摄像头拍照;
    • 从相册中选择;
    • 从图库中选择。
  • UIImagePickerController 是系统提供的用来获取图片和视频的接口。用 UIImagePickerController 类来获取图片视频,大体分为以下几个步骤:

    • 初始化 UIImagePickerController 类;
    • 设置 UIImagePickerController 实例的数据来源类型;
    • 设置代理;
    • 如果需要做图片修改的话设置 allowsEditing = YES。

1、imagePickerController 的创建

  • Objective-C

    • 需遵守协议 UIImagePickerControllerDelegate, UINavigationControllerDelegate

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28
      29
      30
      31
      32
      33
      34
      35
      36
      37
      38
      39
      40
      41
      // 实例化 UIImagePickerController 对象

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

      // 设置代理
      imagePickerController.delegate = self;

      // 设置是否需要做图片编辑,default NO
      imagePickerController.allowsEditing = YES;

      // 判断数据来源是否可用
      if([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary]) {

      // 设置数据来源
      imagePickerController.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;

      // 打开相机/相册/图库
      [self presentViewController:imagePickerController animated:YES completion:nil];
      }

      // UIImagePickerControllerDelegate 协议方法

      // 取消选择
      - (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker {

      // 退出当前界面
      [picker dismissViewControllerAnimated:YES completion:nil];
      }

      // 选择完成
      - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {

      UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 20, self.view.frame.size.width,
      self.view.frame.size.height - 20)];
      [self.view addSubview:imageView];

      // 获取点击的图片
      imageView.image = [info objectForKey:UIImagePickerControllerOriginalImage];

      [picker dismissViewControllerAnimated:YES completion:nil];
      }
  • Swift

    • 需遵守协议 UIImagePickerControllerDelegate, UINavigationControllerDelegate

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28
      29
      30
      31
      32
      33
      34
      35
      36
      37
      38
      39
      40
      // 实例化 UIImagePickerController 对象

      let imagePickerController = UIImagePickerController()

      // 设置代理
      imagePickerController.delegate = self

      // 设置是否需要做图片编辑,default NO.
      imagePickerController.allowsEditing = true

      // 判断数据来源是否可用
      if UIImagePickerController.isSourceTypeAvailable(UIImagePickerControllerSourceType.PhotoLibrary) {

      // 设置数据来源
      imagePickerController.sourceType = UIImagePickerControllerSourceType.PhotoLibrary

      // 打开相机/相册/图库
      self.presentViewController(imagePickerController, animated: true, completion: nil)
      }

      // UIImagePickerControllerDelegate 协议方法

      // 取消选择
      func imagePickerControllerDidCancel(picker: UIImagePickerController) {

      // 退出当前界面
      picker.dismissViewControllerAnimated(true, completion: nil)
      }

      // 选择完成
      func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) {

      let imageView = UIImageView(frame: CGRectMake(0, 20, self.view.frame.size.width, self.view.frame.size.height - 20))
      self.view.addSubview(imageView)

      // 获取点击的图片
      imageView.image = info[UIImagePickerControllerOriginalImage] as? UIImage

      picker.dismissViewControllerAnimated(true, completion: nil)
      }

2、imagePickerController 的设置

  • Objective-C

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    // 设置代理,需遵守 UIImagePickerControllerDelegate, UINavigationControllerDelegate 协议
    imagePickerController.delegate = self;

    // 设置是否需要做图片编辑
    imagePickerController.allowsEditing = YES;

    // 判断设备数据来源是否支持
    /*
    UIImagePickerControllerSourceTypePhotoLibrary, // 来自图库
    UIImagePickerControllerSourceTypeCamera, // 来自相机
    UIImagePickerControllerSourceTypeSavedPhotosAlbum // 来自相册
    */
    if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary]) {

    }

    // 判断摄像头是否支持
    /*
    UIImagePickerControllerCameraDeviceRear, // 后置摄像头
    UIImagePickerControllerCameraDeviceFront // 前置摄像头
    */
    if ([UIImagePickerController isCameraDeviceAvailable:UIImagePickerControllerCameraDeviceRear]) {

    }

    // 判断闪光灯是否支持
    if ([UIImagePickerController isFlashAvailableForCameraDevice:UIImagePickerControllerCameraDeviceFront]) {

    }

    // 获取数据来源支持的媒体类型
    /*
    UIImagePickerControllerSourceTypePhotoLibrary, // 来自图库
    "public.image",
    "public.movie"

    UIImagePickerControllerSourceTypeCamera, // 来自相机
    ...

    UIImagePickerControllerSourceTypeSavedPhotosAlbum // 来自相册
    "public.image",
    "public.movie"
    */
    NSArray *mediaTypesArray = [UIImagePickerController availableMediaTypesForSourceType:UIImagePickerControllerSourceTypeSavedPhotosAlbum];

    // 获取相机拥有的模式
    /*
    UIImagePickerControllerCameraDeviceRear, // 后置摄像头
    ...

    UIImagePickerControllerCameraDeviceFront // 前置摄像头
    ...
    */
    NSArray *captureModesArray = [UIImagePickerController availableCaptureModesForCameraDevice:UIImagePickerControllerCameraDeviceFront];

    // 设置数据来源
    /*
    UIImagePickerControllerSourceTypePhotoLibrary, // 来自图库,默认
    UIImagePickerControllerSourceTypeCamera, // 来自相机
    UIImagePickerControllerSourceTypeSavedPhotosAlbum // 来自相册
    */
    imagePickerController.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;

    // 设置媒体类型
    /*
    kUTTypeImage 包含:

    kUTTypeImage; // 抽象的图片类型
    kUTTypeJPEG;
    kUTTypeJPEG2000;
    kUTTypeTIFF;
    kUTTypePICT;
    kUTTypeGIF;
    kUTTypePNG;
    kUTTypeQuickTimeImage;
    kUTTypeAppleICNS;
    kUTTypeBMP;
    kUTTypeICO

    kUTTypeMovie 包含:

    kUTTypeAudiovisualContent; // 抽象的声音视频
    kUTTypeMovie; // 抽象的媒体格式(声音和视频)
    kUTTypeVideo; // 只有视频没有声音
    kUTTypeAudio; // 只有声音没有视频
    kUTTypeQuickTimeMovie;
    kUTTypeMPEG;
    kUTTypeMPEG4;
    kUTTypeMP3;
    kUTTypeMPEG4Audio;
    kUTTypeAppleProtectedMPEG4Audio

    需要 #import <MobileCoreServices/MobileCoreServices.h> 才能用 kUTTypeImage 和 KUTTypeMovie 。

    default value is an array containing kUTTypeImage.
    */
    imagePickerController.mediaTypes = @[(NSString *)kUTTypeImage, (NSString *)kUTTypeMovie];

    // 设置摄像头
    /*
    UIImagePickerControllerCameraDeviceRear, // 后置摄像头,默认
    UIImagePickerControllerCameraDeviceFront // 前置摄像头
    */
    imagePickerController.cameraDevice = UIImagePickerControllerCameraDeviceFront;

    // 设置相机模式
    /*
    UIImagePickerControllerCameraCaptureModePhoto, // 照相模式,默认
    UIImagePickerControllerCameraCaptureModeVideo // 录像模式
    */
    imagePickerController.cameraCaptureMode = UIImagePickerControllerCameraCaptureModePhoto;

    // 设置闪光灯模式
    /*
    UIImagePickerControllerCameraFlashModeOff = -1, // 关
    UIImagePickerControllerCameraFlashModeAuto = 0, // 自动,默认
    UIImagePickerControllerCameraFlashModeOn = 1 // 开
    */
    imagePickerController.cameraFlashMode = UIImagePickerControllerCameraFlashModeOn;

    // 设置录像质量
    /*
    UIImagePickerControllerQualityTypeHigh = 0, // 高质量,highest quality
    UIImagePickerControllerQualityTypeMedium = 1, // 中质量,默认,Wi-Fi
    UIImagePickerControllerQualityTypeLow = 2, // 低质量,cellular network
    UIImagePickerControllerQualityType640x480 = 3, // VGA 质量,VGA quality

    UIImagePickerControllerQualityTypeIFrame1280x720 = 4,
    UIImagePickerControllerQualityTypeIFrame960x540 = 5

    apply only if mediaTypes includes kUTTypeMovie
    */
    imagePickerController.videoQuality = UIImagePickerControllerQualityTypeHigh;

    // 设置录像时间长度
    /*
    default is 10 minutes. apply only mediaTypes includes kUTTypeMovie
    */
    imagePickerController.videoMaximumDuration = 600;

    // 设置是否显示相机原生 UI
    /*
    set to NO to hide all standard camera UI. default is YES. available sourceType is Camera.
    */
    imagePickerController.showsCameraControls = YES;

    // 自定义相机视图
    /*
    set a view to overlay the preview view. default is YES. available sourceType is Camera.
    */
    imagePickerController.cameraOverlayView = myView;

    // 改变相机视图
    /*
    set the transform of the preview view. default is YES. available sourceType is Camera.

    旋转 45 度,需要输入的参数为弧度,45/180 * M_PI,1 度 = PI/180 弧度
    */
    imagePickerController.cameraViewTransform = CGAffineTransformMakeRotation(0.25 * M_PI);

    // 打开相机/相册/图库
    /*
    访问设置的数据来源界面
    */
    [self presentViewController:imagePickerController animated:YES completion:nil];

    // 拍照
    /*
    拍摄照片
    */
    [imagePickerController takePicture];

    // 录像

    // 开始录像
    [imagePickerController startVideoCapture];

    // 停止录像
    [imagePickerController stopVideoCapture];

    // 退出当前界面(相机/相册/图库)
    /*
    在 UIImagePickerControllerDelegate 协议方法中调用
    */
    [picker dismissViewControllerAnimated:YES completion:nil];

    // 获取选取媒体类型(图片或者视频)
    /*
    选取的信息都在 info 中,info 是一个字典。字典中的键:

    UIImagePickerControllerMediaType; // 指定用户选择的媒体类型,包含着 kUTTypeImage 和 kUTTypeMovie
    UIImagePickerControllerOriginalImage; // 原始图片
    UIImagePickerControllerEditedImage; // 修改后的图片,只有打开编辑模式 info 里才有此键值对
    UIImagePickerControllerCropRect; // 裁剪尺寸,只有打开编辑模式 info 里才有此键值对
    UIImagePickerControllerMediaURL; // 媒体的 URL
    UIImagePickerControllerReferenceURL; // 原件的 URL
    UIImagePickerControllerMediaMetadata // 当数据来源是照相机的时候这个值才有效

    kUTTypeImage 包含:

    kUTTypeImage; // 抽象的图片类型
    kUTTypeJPEG;
    kUTTypeJPEG2000;
    kUTTypeTIFF;
    kUTTypePICT;
    kUTTypeGIF;
    kUTTypePNG;
    kUTTypeQuickTimeImage;
    kUTTypeAppleICNS;
    kUTTypeBMP;
    kUTTypeICO

    kUTTypeMovie 包含:

    kUTTypeAudiovisualContent; // 抽象的声音视频
    kUTTypeMovie; // 抽象的媒体格式(声音和视频)
    kUTTypeVideo; // 只有视频没有声音
    kUTTypeAudio; // 只有声音没有视频
    kUTTypeQuickTimeMovie;
    kUTTypeMPEG;
    kUTTypeMPEG4;
    kUTTypeMP3;
    kUTTypeMPEG4Audio;
    kUTTypeAppleProtectedMPEG4Audio

    需要 #import <MobileCoreServices/MobileCoreServices.h> 才能用 kUTTypeImage 和 KUTTypeMovie 。
    */

    // 直接处理点击的媒体资源

    UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 20, self.view.frame.size.width,
    self.view.frame.size.height - 20)];
    [self.view addSubview:imageView];

    // 获取点击的图片
    imageView.image = [info objectForKey:UIImagePickerControllerOriginalImage];

    // 先判断点击的资源类型再处理

    // 判断点击的媒体资源类型
    if ([[info objectForKey:UIImagePickerControllerMediaType] isEqualToString:(NSString *)kUTTypeImage]) {

    UIImageView *headerImageView = [[UIImageView alloc] initWithFrame:CGRectMake(20, 40, 100, 100)];
    headerImageView.layer.borderColor = [[UIColor greenColor] CGColor];
    headerImageView.layer.borderWidth = 3;
    [self.view addSubview:headerImageView];

    // 获取点击的图片
    headerImageView.image = [info objectForKey:UIImagePickerControllerEditedImage];
    }
  • Swift

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    // 设置代理,需遵守 UIImagePickerControllerDelegate, UINavigationControllerDelegate 协议
    imagePickerController.delegate = self

    // 设置是否需要做图片编辑
    imagePickerController.allowsEditing = true

    // 判断设备数据来源是否支持
    /*
    case PhotoLibrary // 来自图库
    case Camera // 来自相机
    case SavedPhotosAlbum // 来自相册
    */
    if UIImagePickerController.isSourceTypeAvailable(.PhotoLibrary) {

    }

    // 判断摄像头是否支持
    /*
    case Rear // 后置摄像头
    case Front // 前置摄像头
    */
    if UIImagePickerController.isCameraDeviceAvailable(.Rear) {

    }

    // 判断闪光灯是否支持
    if UIImagePickerController.isFlashAvailableForCameraDevice(.Front) {

    }

    // 获取数据来源支持的媒体类型
    /*
    PhotoLibrary, // 来自图库
    "public.image",
    "public.movie"

    Camera, // 来自相机
    ...

    SavedPhotosAlbum // 来自相册
    "public.image",
    "public.movie"
    */
    let mediaTypesArray = UIImagePickerController.availableMediaTypesForSourceType(.SavedPhotosAlbum)

    // 获取相机拥有的模式
    /*
    Rear, // 后置摄像头
    ...

    Front // 前置摄像头
    ...
    */
    let captureModesArray = UIImagePickerController.availableCaptureModesForCameraDevice(.Front)

    // 设置数据来源
    /*
    case PhotoLibrary // 来自图库
    case Camera // 来自相机
    case SavedPhotosAlbum // 来自相册
    */
    imagePickerController.sourceType = .PhotoLibrary

    // 设置媒体类型
    /*
    kUTTypeImage 包含:
    kUTTypeImage; // 抽象的图片类型
    kUTTypeJPEG;
    kUTTypeJPEG2000;
    kUTTypeTIFF;
    kUTTypePICT;
    kUTTypeGIF;
    kUTTypePNG;
    kUTTypeQuickTimeImage;
    kUTTypeAppleICNS;
    kUTTypeBMP;
    kUTTypeICO

    kUTTypeMovie 包含:
    kUTTypeAudiovisualContent; // 抽象的声音视频
    kUTTypeMovie; // 抽象的媒体格式(声音和视频)
    kUTTypeVideo; // 只有视频没有声音
    kUTTypeAudio; // 只有声音没有视频
    kUTTypeQuickTimeMovie;
    kUTTypeMPEG;
    kUTTypeMPEG4;
    kUTTypeMP3;
    kUTTypeMPEG4Audio;
    kUTTypeAppleProtectedMPEG4Audio

    需要 import MobileCoreServices 才能用 kUTTypeImage 和 KUTTypeMovie 。

    default value is an array containing kUTTypeImage.
    */
    imagePickerController.mediaTypes = [String(kUTTypeImage), String(kUTTypeMovie)]

    // 设置摄像头
    /*
    Rear, // 后置摄像头,默认
    Front // 前置摄像头
    */
    imagePickerController.cameraDevice = .Front

    // 设置相机模式
    /*
    Photo, // 照相模式,默认
    Video // 录像模式
    */
    imagePickerController.cameraCaptureMode = .Photo

    // 设置闪光灯模式
    /*
    Off = -1, // 关
    Auto = 0, // 自动,默认
    On = 1 // 开
    */
    imagePickerController.cameraFlashMode = .On

    // 设置录像质量
    /*
    TypeHigh = 0, // 高质量, highest quality
    TypeMedium = 1, // 中质量,默认, medium quality, Wi-Fi
    TypeLow = 2, // 低质量, lowest quality, cellular network
    Type640x480 = 3, // VGA 质量, VGA quality

    TypeIFrame1280x720 = 4,
    TypeIFrame960x540 = 5

    apply only if mediaTypes includes kUTTypeMovie
    */
    imagePickerController.videoQuality = .TypeHigh

    // 设置录像时间长度
    /*
    default is 10 minutes. apply only mediaTypes includes kUTTypeMovie
    */
    imagePickerController.videoMaximumDuration = 600

    // 设置是否显示相机原生 UI
    /*
    set to NO to hide all standard camera UI. default is YES. available sourceType is Camera.
    */
    imagePickerController.showsCameraControls = true

    // 自定义相机视图
    /*
    set a view to overlay the preview view. default is YES. available sourceType is Camera.
    */
    imagePickerController.cameraOverlayView = myView

    // 改变相机视图
    /*
    set the transform of the preview view. default is YES. available sourceType is Camera.

    旋转 45 度,需要输入的参数为弧度,45/180 * M_PI,1 度 = PI/180 弧度
    */
    imagePickerController.cameraViewTransform = CGAffineTransformMakeRotation(0.25 * CGFloat(M_PI))

    // 打开相机/相册/图库
    /*
    访问设置的数据来源界面
    */
    self.presentViewController(imagePickerController, animated: true, completion: nil)

    // 拍照
    /*
    拍摄照片
    */
    imagePickerController.takePicture()

    // 录像

    // 开始录像
    imagePickerController.startVideoCapture()

    // 停止录像
    imagePickerController.stopVideoCapture()

    // 退出当前界面(相机/相册/图库)
    /*
    在 UIImagePickerControllerDelegate 协议方法中调用
    */
    picker.dismissViewControllerAnimated(true, completion: nil)

    // 获取选取媒体类型(图片或者视频)
    /*
    选取的信息都在 info 中,info 是一个字典。字典中的键:

    UIImagePickerControllerMediaType; // 指定用户选择的媒体类型,包含着 kUTTypeImage 和 kUTTypeMovie
    UIImagePickerControllerOriginalImage; // 原始图片
    UIImagePickerControllerEditedImage; // 修改后的图片,只有打开编辑模式 info 里才有此键值对
    UIImagePickerControllerCropRect; // 裁剪尺寸,只有打开编辑模式 info 里才有此键值对
    UIImagePickerControllerMediaURL; // 媒体的 URL
    UIImagePickerControllerReferenceURL; // 原件的 URL
    UIImagePickerControllerMediaMetadata // 当数据来源是照相机的时候这个值才有效

    kUTTypeImage 包含:
    kUTTypeImage; // 抽象的图片类型
    kUTTypeJPEG;
    kUTTypeJPEG2000;
    kUTTypeTIFF;
    kUTTypePICT;
    kUTTypeGIF;
    kUTTypePNG;
    kUTTypeQuickTimeImage;
    kUTTypeAppleICNS;
    kUTTypeBMP;
    kUTTypeICO

    kUTTypeMovie 包含:
    kUTTypeAudiovisualContent; // 抽象的声音视频
    kUTTypeMovie; // 抽象的媒体格式(声音和视频)
    kUTTypeVideo; // 只有视频没有声音
    kUTTypeAudio; // 只有声音没有视频
    kUTTypeQuickTimeMovie;
    kUTTypeMPEG;
    kUTTypeMPEG4;
    kUTTypeMP3;
    kUTTypeMPEG4Audio;
    kUTTypeAppleProtectedMPEG4Audio

    需要 import MobileCoreServices 才能用 kUTTypeImage 和 KUTTypeMovie 。
    */

    // 直接处理点击的媒体资源

    let imageView = UIImageView(frame: CGRectMake(0, 20, self.view.frame.size.width, self.view.frame.size.height - 20))
    self.view.addSubview(imageView)

    // 获取点击的图片
    imageView.image = info[UIImagePickerControllerOriginalImage] as? UIImage

    // 先判断点击的资源类型再处理

    // 判断点击的媒体资源类型
    if (info[UIImagePickerControllerMediaType]?.isEqualToString(String(kUTTypeImage)) != nil) {

    let headerImageView = UIImageView(frame: CGRectMake(20, 40, 100, 100))
    headerImageView.layer.borderColor = UIColor.greenColor().CGColor
    headerImageView.layer.borderWidth = 3
    self.view.addSubview(headerImageView)

    // 获取点击的图片
    headerImageView.image = info[UIImagePickerControllerEditedImage] as? UIImage
    }

3、UIImagePickerControllerDelegate 协议方法

  • Objective-C

    1
    2
    3
    4
    5
    6
    7
    8
    9
    // 取消选择,点击界面中的取消(Cancel)按钮时触发
    - (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker {

    }

    // 选择完成,点击界面中的某个图片或者选择(Choose)按钮时触发
    - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {

    }
  • Swift

    1
    2
    3
    4
    5
    6
    7
    8
    9
    // 取消选择,点击界面中的取消(Cancel)按钮时触发
    func imagePickerControllerDidCancel(picker: UIImagePickerController) {

    }

    // 选择完成,点击界面中的某个图片或者选择(Choose)按钮时触发
    func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) {

    }
文章目录
  1. 1. 前言
  2. 2. 1、imagePickerController 的创建
  3. 3. 2、imagePickerController 的设置
  4. 4. 3、UIImagePickerControllerDelegate 协议方法
隐藏目录