图像选择控制器:UIImagePickerController

功能:用于选取相册或相机等里面的照片。

@interface UIImagePickerController : UINavigationController

枚举:

//图片资源来源类型

typedef NS_ENUM(NSInteger, UIImagePickerControllerSourceType) {

UIImagePickerControllerSourceTypePhotoLibrary,          //图库

UIImagePickerControllerSourceTypeCamera,                 //相机

UIImagePickerControllerSourceTypeSavedPhotosAlbum   //相册

};

//摄像图像的质量

typedef NS_ENUM(NSInteger, UIImagePickerControllerQualityType) {

UIImagePickerControllerQualityTypeHigh = 0,          // 高质量

UIImagePickerControllerQualityTypeMedium = 1,      //中等质量,适合通过Wi-Fi传输

UIImagePickerControllerQualityTypeLow = 2,           // 最低的质量,适合通过蜂窝网络传输

UIImagePickerControllerQualityType640x480 = 3,             // VGA质量,640*480分辨率

UIImagePickerControllerQualityTypeIFrame1280x720 = 4,  // VGA质量1280*720分辨率

UIImagePickerControllerQualityTypeIFrame960x540 = 5    // VGA质量,960*540分辨率

};

//相机摄像模式

typedef NS_ENUM(NSInteger, UIImagePickerControllerCameraCaptureMode) {

UIImagePickerControllerCameraCaptureModePhoto,  //图片

UIImagePickerControllerCameraCaptureModeVideo   //录像

};

//摄像头位置

typedef NS_ENUM(NSInteger, UIImagePickerControllerCameraDevice) {

UIImagePickerControllerCameraDeviceRear,          //后摄像头

UIImagePickerControllerCameraDeviceFront          //前摄像头

};

//闪光灯状态模式

typedef NS_ENUM(NSInteger, UIImagePickerControllerCameraFlashMode) {

UIImagePickerControllerCameraFlashModeOff  = -1,   //关闭状态

UIImagePickerControllerCameraFlashModeAuto = 0,   //自动调节状态

UIImagePickerControllerCameraFlashModeOn   = 1    //开启状态

};

图片信息中字典的键:

UIKIT_EXTERN NSString *const UIImagePickerControllerMediaType;       //用户自定义的媒体类型

UIKIT_EXTERN NSString *const UIImagePickerControllerOriginalImage;   // 原始的图片

UIKIT_EXTERN NSString *const UIImagePickerControllerEditedImage;     // 编辑后的图片

UIKIT_EXTERN NSString *const UIImagePickerControllerCropRect;        // 裁剪尺寸

UIKIT_EXTERN NSString *const UIImagePickerControllerMediaURL;        // 媒体URL

UIKIT_EXTERN NSString *const UIImagePickerControllerReferenceURL;  // 原件URL

UIKIT_EXTERN NSString *const UIImagePickerControllerMediaMetadata  // 仅有效于拍摄图片时

属性:

//图像选取代理

@property(nonatomic,assign)  id <UINavigationControllerDelegate, UIImagePickerControllerDelegate> delegate;

//图片资源来源类型,默认来自图库

@property(nonatomic)UIImagePickerControllerSourceType     sourceType;

//媒体类型数组

@property(nonatomic,copy)NSArray  *mediaTypes;

//是否允许编辑图像,默认为NO

@property(nonatomic) BOOL   allowsEditing ;

@property(nonatomic)  BOOL    allowsImageEditing ;

//录像最大时长,默认为10分钟

@property(nonatomic)  NSTimeInterval   videoMaximumDuration;

//录像质量

@property(nonatomic)  UIImagePickerControllerQualityType  videoQuality ;

//是否显示相机控制界面,默认显示

@property(nonatomic) BOOL  showsCameraControls ;

//设置视图覆盖预览视图

@property(nonatomic,retain)    UIView    *cameraOverlayView  ;

//相机视图仿射类型

@property(nonatomic) CGAffineTransform   cameraViewTransform ;

//相机摄像模式,默认为拍摄图片

@property(nonatomic) UIImagePickerControllerCameraCaptureMode cameraCaptureMode ;

//摄像头选取,默认为后摄像头

@property(nonatomic) UIImagePickerControllerCameraDevice cameraDevice ;

//闪光灯状态模式

@property(nonatomic) UIImagePickerControllerCameraFlashMode   cameraFlashMode;

方法:

//资源来源类型是否可用

+ (BOOL)isSourceTypeAvailable:(UIImagePickerControllerSourceType)sourceType;

//返回资源来源类型中可用的媒体类型数组

+ (NSArray *)availableMediaTypesForSourceType:(UIImagePickerControllerSourceType)sourceType;

//摄像头是否可用

+ (BOOL)isCameraDeviceAvailable:(UIImagePickerControllerCameraDevice)cameraDevice                   ;

//闪光灯是否可用

+ (BOOL)isFlashAvailableForCameraDevice:(UIImagePickerControllerCameraDevice)cameraDevice ;

//返回可用的相机模式数组

+ (NSArray *)availableCaptureModesForCameraDevice (UIImagePickerControllerCameraDevice)

cameraDevice;

//照相

- (void)takePicture;

//开始录频

- (BOOL)startVideoCapture ;

//停止录频

- (void)stopVideoCapture ;

代理:

@protocol UIImagePickerControllerDelegate<NSObject>

@optional

//选取编辑过的图片

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

//选取原始图片

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info;

//取消选取

- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker;

@end

保存相关的函数:

// 保存图片到被保存的相册中

UIKIT_EXTERN void UIImageWriteToSavedPhotosAlbum(UIImage *image, id completionTarget, SEL completionSelector, void *contextInfo);

// - (void)image:(UIImage *)image didFinishSavingWithError:(NSError *)error contextInfo:(void *)contextInfo;

// 保存指定路径的录频到被保存的相册中

UIKIT_EXTERN BOOL UIVideoAtPathIsCompatibleWithSavedPhotosAlbum(NSString *videoPath) ;

// 保存录频到被保存的相册中

UIKIT_EXTERN void UISaveVideoAtPathToSavedPhotosAlbum(NSString *videoPath, id completionTarget, SEL completionSelector, void *contextInfo);

//- (void)video:(NSString *)videoPath didFinishSavingWithError:(NSError *)error contextInfo:(void *)contextInfo;

下面来举一个实例如下:从本地相册读取显示图片

1、设置故事板,往故事板的视图中拖入两个控件,一个是UIImageView,另一个是UIButton,分别命名为imageView、“相册”。

 

2、将imageView关联IBOutLet到控制器类中作为属性,给"相册"按钮关联IBAction事件,用来显示功能。还要让类实现图像选取器控制器协议和导航控制器协议

3、现在就是显示功能的实现和协议方法的实现了。

//按钮事件,打开相册(以模态窗口的形式显示相册)

- (IBAction)buttonClicked:(UIButton *)sender
{
//创建图片选取控制器
UIImagePickerController *imagePicker = [[UIImagePickerController alloc]init]; //图片资源来自相册
imagePicker.sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum; //设置选取代理
imagePicker.delegate = self; //使用模态窗口显示相册
[self presentViewController:imagePicker animated:YES completion:nil];
} - (void)viewDidLoad {
[super viewDidLoad]; }

//实现协议方法,选取相册中的相片:

#pragma mark -<UIImagePickercontrollerDelegate>

-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
//NSLog(@"%@",info);
/*info:这个字典中放着图片的具体信息,通过这个字典的键可以获取图片*/
//取出图片
self.image = [info objectForKey:UIImagePickerControllerOriginalImage];//显示图片在图像视图中
[self.imageView setImage:self.image]; //关闭模态窗口
[picker dismissViewControllerAnimated:YES completion:nil];
}

4、演示结果:

开始运行截图:                                                    显示的本地相册截图:

   

选取某一图片截图:                                              点击"相册"返回,再选取某一图片截图:

   

iOS:图像选取器控制器控件UIImagePickerController的详解的更多相关文章

  1. iOS:提示框(警告框)控件UIAlertView的详解

    提示框(警告框)控件:UIAlertView   功能:当点击按钮或标签等时,弹出一个提示框,显示必要的提示,然后通过添加的按钮完成需要的功能.   类型:typedef NS_ENUM(NSInte ...

  2. 《手把手教你》系列技巧篇(三十八)-java+ selenium自动化测试-日历时间控件-下篇(详解教程)

    1.简介 理想很丰满现实很骨感,在应用selenium实现web自动化时,经常会遇到处理日期控件点击问题,手工很简单,可以一个个点击日期控件选择需要的日期,但自动化执行过程中,完全复制手工这样的操作就 ...

  3. iOS:UIPageViewController翻页控制器控件详细介绍

    翻页控制器控件:UIPageViewController 介绍: 1.它是为我们提供了一种类似翻书效果的一种控件.我们可以通过使用UIPageViewController控件,来完成类似图书一样的翻页 ...

  4. iOS:选择器控件UIPickerView的详解和演示

    选择器控件UIPickerView: 功能:它能够创建一个类似于密码锁式的单列或多列的选择菜单,用户可以通过它设置的代理来选择需要菜单中的任意的数据.例如创建日历.字体表(类型.大小.颜色).图库等. ...

  5. iOS:提示框(警告框)控件UIActionSheet的详解

    提示框(警告框)控件2:UIActionSheet 功能:当点击按钮或标签等时,弹出一个提示框,显示必要的提示,然后通过添加的按钮完成需要的功能.它与导航栏类似,它继承自UIView.   风格类型: ...

  6. iOS:下拉刷新控件UIRefreshControl的详解

    下拉刷新控件:UIRefreshControl 1.具体类信息: @interface UIRefreshControl : UIControl //继承控制类 - (instancetype)ini ...

  7. iOS:网页视图控件UIWebView的详解

    网页视图控件:UIWebView 功能:它是继承于UIView的,是一个内置的浏览器控件,以用来浏览从网络下载下来的网页或者本地上加载下来的文档. 枚举: //网页视图导航类型 typedef NS_ ...

  8. delphi控件属性大全-详解-简介

    http://blog.csdn.net/u011096030/article/details/18716713 button 组件: CAPTION 属性 :用于在按钮上显示文本内容 Cancel ...

  9. AnyCAD三维控件场景节点详解

    SceneNode是AnyCAD三维图形平台的AnyViz显示引擎的核心对象之一,只有放在场景管理器(SceneManager)里的节点才能被显示引擎所显示. 1.   节点分类 SceneNode是 ...

随机推荐

  1. NOIP 2011 Day 1

    NOIP 2011 Day 1 tags: NOIP 搜索 categories: 信息学竞赛 总结 铺地毯 选择客栈 Mayan游戏 铺地毯 Solution 因为只会询问一个点被谁覆盖, 而且后面 ...

  2. [PAT] 1143 Lowest Common Ancestor(30 分)1145 Hashing - Average Search Time(25 分)

    1145 Hashing - Average Search Time(25 分)The task of this problem is simple: insert a sequence of dis ...

  3. Linus 谈软件开发管理经验

    原文出处: linuxtoday   译文出处:CSDN // 伯乐在线转注:英文原文写于 2011 年 导读:没有人比Linus Torvalds更了解软件开发项目管理中的酸甜苦辣了.作为Linux ...

  4. CentOS 7 上搭建 ownCloud 私有云

    所需软件 & 环境 操作系统:CentOS 7.3.1711 最小安装 (已关闭 SELinux 和防火墙) 应用软件: Nginx  .MariaDB  .PHP  .ownCloud 10 ...

  5. 【已解决】php本地环境超级慢

    打开 C:\Windows\System32\drivers\etc去掉 #127.0.0.1 localhost 前面的#保留 #::1 localhost 前面的#

  6. PTA L1-020 帅到没朋友 团体程序设计天梯赛-练习集

    L1-020 帅到没朋友(20 分)   当芸芸众生忙着在朋友圈中发照片的时候,总有一些人因为太帅而没有朋友.本题就要求你找出那些帅到没有朋友的人. 输入格式: 输入第一行给出一个正整数N(≤),是已 ...

  7. javascript 中利用正则匹配 时间

    本文从百度知道回来中粘贴过来,当做一个笔记,因为,说的很详细 最简单的正则 如 : \d{4}-\d{2}-\d{2}但是实际情况却不是那么简单,,要考虑,有效性和闰年等问题..... 对于日期的有效 ...

  8. 洛谷P3539 [POI2012] ROZ-Fibonacci Representation

    题目传送门 转载自:five20,转载请注明出处 本来看到这题,蒟蒻是真心没有把握的,还是five20大佬巨orz 首先由于斐波拉契数的前两项是1,1 ,所以易得对于任何整数必能写成多个斐波拉契数加减 ...

  9. Java实现打包下载BLOB字段中的文件

    概述 web项目的文件打包下载实现:servlet接收请求,spring工具类访问数据库及简化大字段内容获取,org.apache.tools.zip打包. 必要提醒:当前总结是继Java实现下载BL ...

  10. VB查询数据库之报表——机房收费系统总结(六)

    我们要用一个软件做报表的模板.然后在VB里面添加部件.代码调用模板,详细步骤如下. 一.下载安装 首先做报表要下载安装Grid++Report 4.5 报表设计器 点击下载(内含破解补丁) 二.制作模 ...