图片选取器
:
通常用于照片的选取或者视频的选取
,
继承与
UINavigationController,
所以也可以使用
push
和
pop
的一些视图控制器切换效果
.
iOS 获取图片有三种方法:
1. 直接调用摄像头拍照 ( 拍照时 , 需要手动将照片保存到本地 , 系统不会自动保存成功后的照片 )
2. 从相册中选择
3. 从图库中选择
UIImagePickerController 是系统提供的用来获取图片和视频的接口;
用 UIImagePickerController 类来获取图片视频,大体分为以下几个步骤:
1. 初始化 UIImagePickerController 类;
2. 设置 UIImagePickerController 实例的数据来源类型;
3. 设置设置代理;
4. 如果需要做图片修改的话设置 allowsEditing =yes 。
一 使用步骤 :
1: 实例化图像选取器对象
UIImagePickerController* imagePickerController = [[UIImagePickerController alloc] init]
2: 判断当前设配支持的数据来源
用这些数据来源的时候需要进行检测设备是否支持数据
if([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera])
{
NSLog(@" 支持相机 ");
}
if([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary])
{
NSLog(@" 支持图库 ");
}
if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeSavedPhotosAlbum])
{
NSLog(@" 支持相片库 ");
}
3: 通过上一步获取当前设配支持的数据来源 , 设置我们需要的数据来源
数据来源类型 : 一共三种
enum {
UIImagePickerControllerSourceTypePhotoLibrary ,// 照片库模式。图像选取控制器以该模式显示时会浏览系统照片库的根目录。
UIImagePickerControllerSourceTypeCamera ,// 相机模式,图像选取控制器以该模式显示时可以进行拍照或摄像
UIImagePickerControllerSourceTypeSavedPhotosAlbum // 相机胶卷模式,图像选取控制器以该模式显示时会浏览相机胶卷目录
};
4: 检查支持的媒体来源类型
调用 UIImagePickerController 类的另一个静态方法 availableMediaTypesForSourceType:
返回的是字符串数组, kUTTypeImage 表示静态图片, kUTTypeMovie 表示视频。这两个字符串常量定义在 MobileCoreServices 框架中。
5: 实现代理方法 完成图片的选取
协议方法 :
当用户取消完成后调用此方法
- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker;
当用户选取完成时调用此方法 , 选取的信息都在 info 中 , info 是一个字典 , 其关键字如下
- (void)imagePickerController:(UIImagePickerController *)picker
didFinishPickingMediaWithInfo:(NSDictionary *)info;
调用摄像头来获取资源
NSString *const UIImagePickerControllerMediaType ; 指定用户选择的媒体类型(文章最后进行扩展)
NSString *const UIImagePickerControllerOriginalImage ; 原始图片
NSString *const UIImagePickerControllerEditedImage ; 修改后的图片
NSString *const UIImagePickerControllerCropRect ; 裁剪尺寸
NSString *const UIImagePickerControllerMediaURL ; 媒体的 URL
NSString *const UIImagePickerControllerReferenceURL ; 原件的 URL
NSString *const UIImagePickerControllerMediaMetadata; 当来数据来源是照相机的时候这个值才有效
KUTTypeImage
const CFStringRef kUTTypeImage ; 抽象的图片类型
const CFStringRef kUTTypeJPEG ;
const CFStringRef kUTTypeJPEG2000 ;
const CFStringRef kUTTypeTIFF ;
const CFStringRef kUTTypePICT ;
const CFStringRef kUTTypeGIF ;
const CFStringRef kUTTypePNG ;
const CFStringRef kUTTypeQuickTimeImage ;
const CFStringRef kUTTypeAppleICNS
const CFStringRef kUTTypeBMP;
const CFStringRef kUTTypeICO;
KUTTypeMovie 包含 :
const CFStringRef kUTTypeAudiovisualContent ; 抽象的声音视频
const CFStringRef kUTTypeMovie ; 抽象的媒体格式(声音和视频)
const CFStringRef kUTTypeVideo ; 只有视频没有声音
const CFStringRef kUTTypeAudio ; 只有声音没有视频
const CFStringRef kUTTypeQuickTimeMovie ;
const CFStringRef kUTTypeMPEG ;
const CFStringRef kUTTypeMPEG4 ;
const CFStringRef kUTTypeMP3 ;
const CFStringRef kUTTypeMPEG4Audio ;
const CFStringRef kUTTypeAppleProtectedMPEG4Audio;
二 扩展应用 :
常用属性详解 :
// 指定使用照相机模式 , 可以指定使用相册/照片库
imagepicker.sourceType = UIImagePickerControllerSourceTypeCamera;
// 设置当拍照完或在相册选完照片后,是否跳到编辑模式进行图片剪裁。只有当 showsCameraControls 属性为 true 时才有效果
imagepicker.allowsEditing = YES;
canera 相关的属性方法
// 所有含有 cameraXXX 的属性都必须要 sourceType 是 UIImagePickerControllerSourceTypeCamera 时设置才有效果,否则会有异常
// 设置拍照时的下方的工具栏是否显示,如果需要自定义拍摄界面,则可把该工具栏隐藏
imagepicker.showsCameraControls = YES;
// 设置使用后置摄像头,可以使用前置摄像头
imagepicker.cameraDevice = UIImagePickerControllerCameraDeviceRear;
// 设置闪光灯模式
/*
typedef NS_ENUM(NSInteger, UIImagePickerControllerCameraFlashMode) {
UIImagePickerControllerCameraFlashModeOff = -1,
UIImagePickerControllerCameraFlashModeAuto = 0,
UIImagePickerControllerCameraFlashModeOn = 1
};
*/
imagepicker.cameraFlashMode = UIImagePickerControllerCameraFlashModeAuto;
// 设置相机支持的类型,拍照和录像
imagepicker.mediaTypes = @[(NSString*)kUTTypeImage,(NSString*)kUTTypeMovie];
// 设置拍摄时屏幕的 view 的 transform 属性,可以实现旋转,缩放功能
// imagepicker.cameraViewTransform = CGAffineTransformMakeRotation(M_PI*45/180);
// imagepicker.cameraViewTransform = CGAffineTransformMakeScale(1.5, 1.5);
使用 imagepicker.cameraViewTransform = CGAffineTransformMakeRotation(M_PI*45/180); 旋转 45 度的效果:
使用 imagepicker.cameraViewTransform = CGAffineTransformMakeScale(1.5, 1.5); 全屏的效果,同时 imagepicker.showsCameraControls =NO; 隐藏工具栏:
使用 imagepicker.allowsEditing = YES; 出现的图片编辑效果,只有当 imagepicker.showsCameraControls = YES; 才有效果:
imagepicker.showsCameraControls = NO;
// 拍照,会自动回调 - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info ,对于自定义照相机界面,拍照后回调可以不退出实现连续拍照效果
// 获取拍照的照片
[imagepicker takePicture];
三 自定义相机拍照画面
// 设置拍照时的下方的工具栏是否显示,如果需要自定义拍摄界面,则可把该工具栏隐藏
imagepicker.showsCameraControls = NO;
UIToolbar* tool = [[UIToolbar alloc]initWithFrame:CGRectMake(0, self.view.frame.size.height-55, self.view.frame.size.width, 75)];
tool.barStyle = UIBarStyleBlackTranslucent;
UIBarButtonItem* cancel = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:self action:@selector(cancelCamera)];
UIBarButtonItem* add = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemSave target:self action:@selector(savePhoto)];
[tool setItems:[NSArray arrayWithObjects:cancel,add, nil]];
// 把自定义的 view 设置到 imagepickercontroller 的 overlay 属性中
imagepicker.cameraOverlayView = tool;
iOS 获取图片有三种方法:
1. 直接调用摄像头拍照 ( 拍照时 , 需要手动将照片保存到本地 , 系统不会自动保存成功后的照片 )
2. 从相册中选择
3. 从图库中选择
UIImagePickerController 是系统提供的用来获取图片和视频的接口;
用 UIImagePickerController 类来获取图片视频,大体分为以下几个步骤:
1. 初始化 UIImagePickerController 类;
2. 设置 UIImagePickerController 实例的数据来源类型;
3. 设置设置代理;
4. 如果需要做图片修改的话设置 allowsEditing =yes 。
一 使用步骤 :
1: 实例化图像选取器对象
UIImagePickerController* imagePickerController = [[UIImagePickerController alloc] init]
2: 判断当前设配支持的数据来源
用这些数据来源的时候需要进行检测设备是否支持数据
if([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera])
{
NSLog(@" 支持相机 ");
}
if([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary])
{
NSLog(@" 支持图库 ");
}
if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeSavedPhotosAlbum])
{
NSLog(@" 支持相片库 ");
}
3: 通过上一步获取当前设配支持的数据来源 , 设置我们需要的数据来源
数据来源类型 : 一共三种
enum {
UIImagePickerControllerSourceTypePhotoLibrary ,// 照片库模式。图像选取控制器以该模式显示时会浏览系统照片库的根目录。
UIImagePickerControllerSourceTypeCamera ,// 相机模式,图像选取控制器以该模式显示时可以进行拍照或摄像
UIImagePickerControllerSourceTypeSavedPhotosAlbum // 相机胶卷模式,图像选取控制器以该模式显示时会浏览相机胶卷目录
};
4: 检查支持的媒体来源类型
调用 UIImagePickerController 类的另一个静态方法 availableMediaTypesForSourceType:
返回的是字符串数组, kUTTypeImage 表示静态图片, kUTTypeMovie 表示视频。这两个字符串常量定义在 MobileCoreServices 框架中。
5: 实现代理方法 完成图片的选取
协议方法 :
当用户取消完成后调用此方法
- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker;
当用户选取完成时调用此方法 , 选取的信息都在 info 中 , info 是一个字典 , 其关键字如下
- (void)imagePickerController:(UIImagePickerController *)picker
didFinishPickingMediaWithInfo:(NSDictionary *)info;
调用摄像头来获取资源
NSString *const UIImagePickerControllerMediaType ; 指定用户选择的媒体类型(文章最后进行扩展)
NSString *const UIImagePickerControllerOriginalImage ; 原始图片
NSString *const UIImagePickerControllerEditedImage ; 修改后的图片
NSString *const UIImagePickerControllerCropRect ; 裁剪尺寸
NSString *const UIImagePickerControllerMediaURL ; 媒体的 URL
NSString *const UIImagePickerControllerReferenceURL ; 原件的 URL
NSString *const UIImagePickerControllerMediaMetadata; 当来数据来源是照相机的时候这个值才有效
KUTTypeImage
const CFStringRef kUTTypeImage ; 抽象的图片类型
const CFStringRef kUTTypeJPEG ;
const CFStringRef kUTTypeJPEG2000 ;
const CFStringRef kUTTypeTIFF ;
const CFStringRef kUTTypePICT ;
const CFStringRef kUTTypeGIF ;
const CFStringRef kUTTypePNG ;
const CFStringRef kUTTypeQuickTimeImage ;
const CFStringRef kUTTypeAppleICNS
const CFStringRef kUTTypeBMP;
const CFStringRef kUTTypeICO;
KUTTypeMovie 包含 :
const CFStringRef kUTTypeAudiovisualContent ; 抽象的声音视频
const CFStringRef kUTTypeMovie ; 抽象的媒体格式(声音和视频)
const CFStringRef kUTTypeVideo ; 只有视频没有声音
const CFStringRef kUTTypeAudio ; 只有声音没有视频
const CFStringRef kUTTypeQuickTimeMovie ;
const CFStringRef kUTTypeMPEG ;
const CFStringRef kUTTypeMPEG4 ;
const CFStringRef kUTTypeMP3 ;
const CFStringRef kUTTypeMPEG4Audio ;
const CFStringRef kUTTypeAppleProtectedMPEG4Audio;
二 扩展应用 :
常用属性详解 :
// 指定使用照相机模式 , 可以指定使用相册/照片库
imagepicker.sourceType = UIImagePickerControllerSourceTypeCamera;
// 设置当拍照完或在相册选完照片后,是否跳到编辑模式进行图片剪裁。只有当 showsCameraControls 属性为 true 时才有效果
imagepicker.allowsEditing = YES;
canera 相关的属性方法
// 所有含有 cameraXXX 的属性都必须要 sourceType 是 UIImagePickerControllerSourceTypeCamera 时设置才有效果,否则会有异常
// 设置拍照时的下方的工具栏是否显示,如果需要自定义拍摄界面,则可把该工具栏隐藏
imagepicker.showsCameraControls = YES;
// 设置使用后置摄像头,可以使用前置摄像头
imagepicker.cameraDevice = UIImagePickerControllerCameraDeviceRear;
// 设置闪光灯模式
/*
typedef NS_ENUM(NSInteger, UIImagePickerControllerCameraFlashMode) {
UIImagePickerControllerCameraFlashModeOff = -1,
UIImagePickerControllerCameraFlashModeAuto = 0,
UIImagePickerControllerCameraFlashModeOn = 1
};
*/
imagepicker.cameraFlashMode = UIImagePickerControllerCameraFlashModeAuto;
// 设置相机支持的类型,拍照和录像
imagepicker.mediaTypes = @[(NSString*)kUTTypeImage,(NSString*)kUTTypeMovie];
// 设置拍摄时屏幕的 view 的 transform 属性,可以实现旋转,缩放功能
// imagepicker.cameraViewTransform = CGAffineTransformMakeRotation(M_PI*45/180);
// imagepicker.cameraViewTransform = CGAffineTransformMakeScale(1.5, 1.5);
使用 imagepicker.cameraViewTransform = CGAffineTransformMakeRotation(M_PI*45/180); 旋转 45 度的效果:
使用 imagepicker.cameraViewTransform = CGAffineTransformMakeScale(1.5, 1.5); 全屏的效果,同时 imagepicker.showsCameraControls =NO; 隐藏工具栏:
使用 imagepicker.allowsEditing = YES; 出现的图片编辑效果,只有当 imagepicker.showsCameraControls = YES; 才有效果:
imagepicker.showsCameraControls = NO;
// 拍照,会自动回调 - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info ,对于自定义照相机界面,拍照后回调可以不退出实现连续拍照效果
// 获取拍照的照片
[imagepicker takePicture];
三 自定义相机拍照画面
// 设置拍照时的下方的工具栏是否显示,如果需要自定义拍摄界面,则可把该工具栏隐藏
imagepicker.showsCameraControls = NO;
UIToolbar* tool = [[UIToolbar alloc]initWithFrame:CGRectMake(0, self.view.frame.size.height-55, self.view.frame.size.width, 75)];
tool.barStyle = UIBarStyleBlackTranslucent;
UIBarButtonItem* cancel = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:self action:@selector(cancelCamera)];
UIBarButtonItem* add = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemSave target:self action:@selector(savePhoto)];
[tool setItems:[NSArray arrayWithObjects:cancel,add, nil]];
// 把自定义的 view 设置到 imagepickercontroller 的 overlay 属性中
imagepicker.cameraOverlayView = tool;
//
// ViewController.m
// ImagePIckerController
//
// Created by xalo on 15/10/20.
// Copyright (c) 2015 年 蓝鸥科技 . All rights reserved.
//
#import "ViewController.h"
@interface ViewController ()<UIActionSheetDelegate, UINavigationControllerDelegate, UIImagePickerControllerDelegate>
@property ( weak , nonatomic ) IBOutlet UIView *imageView;
@end
@implementation ViewController
- ( void )viewDidLoad {
[ super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
}
- ( void )didReceiveMemoryWarning {
[ super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
- ( IBAction )HandleBtnAction:(UIButton *)sender {
UIActionSheet *sheet ;
// 判断是否支持相机
if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) {
{
sheet = [[UIActionSheet alloc] initWithTitle: @" 选择 " delegate: self cancelButtonTitle: @" 取消 " destructiveButtonTitle: @" 取消 " otherButtonTitles: @" 拍照 " , @" 从相册选择 " , nil ];
}
}
else
{
sheet = [[UIActionSheet alloc] initWithTitle: @" 选择 " delegate: self cancelButtonTitle: nil destructiveButtonTitle: @" 取消 " otherButtonTitles: @" 从相册选择 " , @" 相机胶卷模式 " , nil ];
}
[sheet showInView: self .view];
}
// 判断是否支持相机 , 跳转到相机或者相册界面
- ( void )actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex
{
NSInteger sourceType = 0 ;
// 判断是否支持相机
if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) {
switch (buttonIndex) {
case 0 :
// 取消
break ;
case 1 :
// 相机
sourceType = UIImagePickerControllerSourceTypeCamera;
break ;
case 2 :
// 从相册选择
sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
break ;
default :
break ;
}
}
else
{
// 当不支持相机时 , 仅支持相册
switch (buttonIndex) {
case 0 :
// 取消
break ;
case 1 :
// 从相册选择
sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
break ;
case 2 :
// 从相册胶卷模式
sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum;
break ;
default :
break ;
}
}
// 查看支持的媒体来源类型
NSLog( @" 支持的媒体来源 :%@" ,[UIImagePickerController availableMediaTypesForSourceType:sourceType]);
// 跳转到相机界面
UIImagePickerController *imagePickerControlelr = [[UIImagePickerController alloc] init];
// 设置代理 , 需要制定两个协议 UINavigationControllerDelegate && UIImagePickerControllerDelegate
imagePickerControlelr.delegate = self ;
// 设置是否允许编辑
imagePickerControlelr.allowsEditing = YES ;
// 设置打开的数据类型
imagePickerControlelr.sourceType = sourceType;
// 设置媒体来源 ( 相机模式下 )
// imagePickerControlelr.mediaTypes = @[@"public.image",@"public.movie"];
imagePickerControlelr.mediaTypes = @[ @"public.movie" ] ;
// imagePickerControlelr.mediaTypes = @[@"public.image"];
//imagePickerControlelr.mediaTypes = @[];
// 显示当前控制器
[ self presentViewController:imagePickerControlelr animated: YES completion: nil ];
}
#pragma mark -
#pragma mark - UIImagePickerControllerDelegate -
// 通过实现 imagePickerController 的代理协议 实现 图片的选取
// 完成选取图片时 执行的方法
- ( void )imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
// 判断当获得的 , 获取当前的媒体类型
NSString *mediaType = [info objectForKey:UIImagePickerControllerMediaType];
NSLog( @" 获取的媒体类型 :%@" , mediaType);
// 选取某个图片时 , 退出当前视图控制器
[picker dismissViewControllerAnimated: YES completion:^{
NSLog( @" 退出照片选取器 " );
}];
// 获取编辑后的图片
UIImage *image = [info objectForKey:UIImagePickerControllerEditedImage];
NSLog( @" 媒体的 URL: %@" ,[info objectForKey:UIImagePickerControllerReferenceURL]);
/* 此处 info 有六个值
NSString *const UIImagePickerControllerMediaType ; 指定用户选择的媒体类型(文章最后进行扩展)
NSString *const UIImagePickerControllerOriginalImage ; 原始图片
NSString *const UIImagePickerControllerEditedImage ; 修改后的图片
NSString *const UIImagePickerControllerCropRect ; 裁剪尺寸
NSString *const UIImagePickerControllerMediaURL ; 媒体的 URL
NSString *const UIImagePickerControllerReferenceURL ; 原件的 URL
NSString *const UIImagePickerControllerMediaMetadata; 当来数据来源是照相机的时候这个值才有效
*/
// 将图片加载到视图上
[ self additionImageViewWithImage:image];
}
// 按下取消按钮式 执行的方法
- ( void )imagePickerControllerDidCancel:(UIImagePickerController *)picker
{
[picker dismissViewControllerAnimated: YES completion:^{
NSLog( @" 关闭相册 " );
}];
}
#pragma mark - imageView -
- ( void )additionImageViewWithImage:(UIImage *)image
{
UIImageView *imageView = [[UIImageView alloc] initWithImage:image];
imageView.frame = self .imageView.bounds;
[ self .imageView addSubview:imageView];
}
// ViewController.m
// ImagePIckerController
//
// Created by xalo on 15/10/20.
// Copyright (c) 2015 年 蓝鸥科技 . All rights reserved.
//
#import "ViewController.h"
@interface ViewController ()<UIActionSheetDelegate, UINavigationControllerDelegate, UIImagePickerControllerDelegate>
@property ( weak , nonatomic ) IBOutlet UIView *imageView;
@end
@implementation ViewController
- ( void )viewDidLoad {
[ super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
}
- ( void )didReceiveMemoryWarning {
[ super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
- ( IBAction )HandleBtnAction:(UIButton *)sender {
UIActionSheet *sheet ;
// 判断是否支持相机
if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) {
{
sheet = [[UIActionSheet alloc] initWithTitle: @" 选择 " delegate: self cancelButtonTitle: @" 取消 " destructiveButtonTitle: @" 取消 " otherButtonTitles: @" 拍照 " , @" 从相册选择 " , nil ];
}
}
else
{
sheet = [[UIActionSheet alloc] initWithTitle: @" 选择 " delegate: self cancelButtonTitle: nil destructiveButtonTitle: @" 取消 " otherButtonTitles: @" 从相册选择 " , @" 相机胶卷模式 " , nil ];
}
[sheet showInView: self .view];
}
// 判断是否支持相机 , 跳转到相机或者相册界面
- ( void )actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex
{
NSInteger sourceType = 0 ;
// 判断是否支持相机
if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) {
switch (buttonIndex) {
case 0 :
// 取消
break ;
case 1 :
// 相机
sourceType = UIImagePickerControllerSourceTypeCamera;
break ;
case 2 :
// 从相册选择
sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
break ;
default :
break ;
}
}
else
{
// 当不支持相机时 , 仅支持相册
switch (buttonIndex) {
case 0 :
// 取消
break ;
case 1 :
// 从相册选择
sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
break ;
case 2 :
// 从相册胶卷模式
sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum;
break ;
default :
break ;
}
}
// 查看支持的媒体来源类型
NSLog( @" 支持的媒体来源 :%@" ,[UIImagePickerController availableMediaTypesForSourceType:sourceType]);
// 跳转到相机界面
UIImagePickerController *imagePickerControlelr = [[UIImagePickerController alloc] init];
// 设置代理 , 需要制定两个协议 UINavigationControllerDelegate && UIImagePickerControllerDelegate
imagePickerControlelr.delegate = self ;
// 设置是否允许编辑
imagePickerControlelr.allowsEditing = YES ;
// 设置打开的数据类型
imagePickerControlelr.sourceType = sourceType;
// 设置媒体来源 ( 相机模式下 )
// imagePickerControlelr.mediaTypes = @[@"public.image",@"public.movie"];
imagePickerControlelr.mediaTypes = @[ @"public.movie" ] ;
// imagePickerControlelr.mediaTypes = @[@"public.image"];
//imagePickerControlelr.mediaTypes = @[];
// 显示当前控制器
[ self presentViewController:imagePickerControlelr animated: YES completion: nil ];
}
#pragma mark -
#pragma mark - UIImagePickerControllerDelegate -
// 通过实现 imagePickerController 的代理协议 实现 图片的选取
// 完成选取图片时 执行的方法
- ( void )imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
// 判断当获得的 , 获取当前的媒体类型
NSString *mediaType = [info objectForKey:UIImagePickerControllerMediaType];
NSLog( @" 获取的媒体类型 :%@" , mediaType);
// 选取某个图片时 , 退出当前视图控制器
[picker dismissViewControllerAnimated: YES completion:^{
NSLog( @" 退出照片选取器 " );
}];
// 获取编辑后的图片
UIImage *image = [info objectForKey:UIImagePickerControllerEditedImage];
NSLog( @" 媒体的 URL: %@" ,[info objectForKey:UIImagePickerControllerReferenceURL]);
/* 此处 info 有六个值
NSString *const UIImagePickerControllerMediaType ; 指定用户选择的媒体类型(文章最后进行扩展)
NSString *const UIImagePickerControllerOriginalImage ; 原始图片
NSString *const UIImagePickerControllerEditedImage ; 修改后的图片
NSString *const UIImagePickerControllerCropRect ; 裁剪尺寸
NSString *const UIImagePickerControllerMediaURL ; 媒体的 URL
NSString *const UIImagePickerControllerReferenceURL ; 原件的 URL
NSString *const UIImagePickerControllerMediaMetadata; 当来数据来源是照相机的时候这个值才有效
*/
// 将图片加载到视图上
[ self additionImageViewWithImage:image];
}
// 按下取消按钮式 执行的方法
- ( void )imagePickerControllerDidCancel:(UIImagePickerController *)picker
{
[picker dismissViewControllerAnimated: YES completion:^{
NSLog( @" 关闭相册 " );
}];
}
#pragma mark - imageView -
- ( void )additionImageViewWithImage:(UIImage *)image
{
UIImageView *imageView = [[UIImageView alloc] initWithImage:image];
imageView.frame = self .imageView.bounds;
[ self .imageView addSubview:imageView];
}
@end