1.+(BOOL)isSourceTypeAvailable:(UIImagePickerControllerSourceType)sourceType;                 检查指定源是否在设备上可用。

//检查照片源是否可用

[UIImagePickerControllerisSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary]2.allowsEditing默认NO

是否允许编辑

允许编辑.

[imagePicker setAllowsEditing:YES];

3.videoMaximumDuration

设置UIImagePicker的最大视频持续时间.默认10分钟

4.+ availableMediaTypesForSourceType: // 指定源可用的媒体种类

//获得相机模式下支持的媒体类型

NSArray*
availableMediaTypes = [UIImagePickerController availableMediaTypesForSourceType:UIImagePickerControllerSourceTypeCamera];

5.sourceType

设置UIImagePicker照片源类型,默认有3种。

照片源类型

UIImagePickerControllerSourceTypeCamera            照相机

UIImagePickerControllerSourceTypePhotoLibrary      照片库(通过同步存放的,用户不能删除)

UIImagePickerControllerSourceTypeSavedPhotosAlbum  保存的照片(通过拍照或者截屏保存的,用户可以删除)

6.UIImagePicker使用步骤:

检查指定源是否可用.
isSourceTypeAvailable:方法.

    检查可用媒体(视频还是只能是图片)
availableMediaTypesForSourceType:方法.

    设置界面媒体属性mediaTypes property.

    显示界面使用presentViewController:animated:completion:方法.iPad中是popover形式.需要确保sourceType有效.

    相关操作,移除视图.





如果想创建一个完全自定义界面的image
picker来浏览图片,使用 Assets
Library Framework Reference中的类. (AV Foundation Programming Guide 中的 “Media
Capture and Access to Camera” )

7.设置源

+ availableMediaTypesForSourceType: // 指定源可用的媒体种类

    + isSourceTypeAvailable: // 指定源是否在设备上可用

      sourceType



// 运行相关接口前需要指明源类型.必须有效,否则抛出异常. picker已经显示的时候改变这个值,picker会相应改变来适应.默认
UIImagePickerControllerSourceTypePhotoLibrary.

8.设置picker属性

allowsEditing //是否可编辑

      delegate

      mediaTypes



// 指示picker中显示的媒体类型.设置每种类型之前应用availableMediaTypesForSourceType:检查一下.如果为空或者array中类型都不可用,会发生异常.默认
kUTTypeImage, 只能显示图片.

9.video选取参数

videoQuality //视频拍摄选取时的编码质量.只有mediaTypes包含kUTTypeMovie时有效.

      videoMaximumDuration //秒,video最大记录时间,默认10分钟.只用当mediaTypes包含kUTTypeMovie时有效.

10.自定义界面

showsCameraControls



// 指示 picker 是否显示默认的camera
controls.默认是YES,设置成NO隐藏默认的controls来使用自定义的overlay
view.(从而可以实现多选而不是选一张picker就dismiss了).只有
UIImagePickerControllerSourceTypeCamera源有效,否则NSInvalidArgumentException异常.



      cameraOverlayView



//自定义的用于显示在picker之上的view.只有当源是UIImagePickerControllerSourceTypeCamera时有效.其他时候使用抛出NSInvalidArgumentException异常.



      cameraViewTransform



//预先动画.只影响预先图像,对自定义的overlay
view和默认的picker无效.只用当picker的源是UIImagePickerControllerSourceTypeCamera时有效,否则NSInvalidArgumentException异常.

11.选取媒体

– takePicture



//使用摄像头选取一个图片。自定义overlay可以多选。已经有图片正在选取是调用无效,必须要等delegate收到
imagePickerController:didFinishPickingMediaWithInfo:消息后才能再次选取。非UIImagePickerControllerSourceTypeCamera源会导致异常。



    – startVideoCapture



    – stopVideoCapture



//结束视频选取,之后系统调用delegate的
imagePickerController:didFinishPickingMediaWithInfo:方法。

12.设置摄像头

cameraDevice //使用的镜头(默认后置的)

    + isCameraDeviceAvailable: // 摄像设备是否可用.

    + availableCaptureModesForCameraDevice: // 设备可用的选取模式

      cameraCaptureMode //相机捕获模式

      cameraFlashMode //闪光灯模式(默认自动)

    + isFlashAvailableForCameraDevice: // 是否有闪光能力

13.UIImagePickerControllerDelegate

使用UIImageWriteToSavedPhotosAlbum保存图像,
UISaveVideoAtPathToSavedPhotosAlbum保存视频. 4.0后使用writeImageToSavedPhotosAlbum:metadata:completionBlock:保存元数据.



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



//包含选择的图片或者一个视频的URL,详见“Editing
Information Keys.”



//如果是设置可编辑属性,那么picker会预显示选中的媒体,编辑后的与初始的都会保存在info中.



    – imagePickerControllerDidCancel:

    – imagePickerController:didFinishPickingImage:editingInfo://Deprecated
in iOS 3.0



NSString *const UIImagePickerControllerMediaType;// 媒体类型

NSString *const UIImagePickerControllerOriginalImage;// 原始未编辑的图像

NSString *const UIImagePickerControllerEditedImage;// 编辑后的图像

NSString *const UIImagePickerControllerCropRect;// 源图像可编辑(有效?)区域

NSString *const UIImagePickerControllerMediaURL;// 视频的路径

NSString *const UIImagePickerControllerReferenceURL;// 原始选择项的URL

NSString *const UIImagePickerControllerMediaMetadata;// 只有在使用摄像头并且是图像类型的时候有效.包含选择图像信息的字典类型

14.UIImagePickerController小例子

UIImagePickerController的代理需要遵守这两个协议.<UIImagePickerControllerDelegate, UINavigationControllerDelegate>

#pragma mark 选择照片

- (void)selectPhoto

{

// 1. 首先判断照片源是否可用

if ([UIImagePickerControllerisSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary]) {

// 0)实例化控制器

UIImagePickerController *picker = [[UIImagePickerControlleralloc]init];

// 1)设置照片源

[picker setSourceType:UIImagePickerControllerSourceTypePhotoLibrary];

// 2) 设置允许修改

[picker setAllowsEditing:YES];

// 3) 设置代理

[picker setDelegate:self];

// 4) 显示控制器

[selfpresentViewController:picker animated:YEScompletion:nil];

} else {

NSLog(@"照片源不可用");

}

}

#pragma mark - imagePicker代理方法

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

{

UIImage *image = info[@"UIImagePickerControllerEditedImage"];

[_imageButtonsetImage:image forState:UIControlStateNormal];

// 关闭照片选择器

[selfdismissViewControllerAnimated:YEScompletion:nil];

// 需要将照片保存至应用程序沙箱,由于涉及到数据存储,同时与界面无关

// 可以使用多线程来保存图像

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{

// 保存图像

// 1. 取图像路径

NSArray *docs = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);

NSString *imagePath = [docs[0]stringByAppendingPathComponent:@"abc.png"];

// 2. 转换成NSData保存

NSData *imageData = UIImagePNGRepresentation(image);

[imageData writeToFile:imagePath atomically:YES];

});

}

UIImagePickerController的更多相关文章

  1. 整理UIImagePickerController问题

    [assetsLibrary addAssetsGroupAlbumWithName:@"iOSDevTip1" resultBlock:^(ALAssetsGroup *grou ...

  2. ios基础篇(二十一)—— UIImagePickerController类

    UIImagePickerController简述: UIImagePickerController 类是获取选择图片和视频的用户接口,我们可以用UIImagePickerController选择我们 ...

  3. UIImagePickerController和UIAlertController结合使用

    在处理个人资料 - 头像的时候,通常有两个选项,一个是调用系统相机,一个是调用系统相册.这里要使用的就是UIImagePickerController方法. 在头像位置的imageView添加一个手势 ...

  4. UIImagePickerController的知识点

    1.UIImagePickerController是系统提供的用来获取图片或视频的接口,使用UIImagePickerController类来获取图片的基本步骤如下: a.初始化UIImagePick ...

  5. UIImagePickerController在ios10环境一打开就crash的问题

    在之前的系统环境下,UIImagePickerController都可以顺利打开.但是自从手机升级了ios10以后,每次打开相机和照片库都会直接崩溃. 通过google搜索找到StackOverflo ...

  6. IOS开发之小实例--使用UIImagePickerController创建一个简单的相机应用程序

    前言:本篇博文是本人阅读国外的IOS Programming Tutorial的一篇入门文章的学习过程总结,难度不大,因为是入门.主要是入门UIImagePickerController这个控制器,那 ...

  7. 捉襟见肘之UIImagePickerController 和自定义照相机

    目标:自拍并结合C++算法,识别人脸信息,第一步骤,调用相机并且自定义界面和转场效果 先复习一下 https://developer.apple.com/library/prerelease/tvos ...

  8. iOS摄像头和相册-UIImagePickerController常用操作

    在一些应用中,我们需要用到iOS设备的摄像头进行拍照,视频.并且从相册中选取我们需要的图片或者视频. 关于iOS摄像头和相册的应用,可以使用UIImagePickerController类来完成控制. ...

  9. UIImagePickerController 获取相片视频

    1.UIImagePickerController的静态方法: imagepicker = [[UIImagePickerController alloc]init];    //UIImagePic ...

  10. IOS开发UI基础UIImagePickerController的属性

    UIImagePickerController 1.+(BOOL)isSourceTypeAvailable:(UIImagePickerControllerSourceType)sourceType ...

随机推荐

  1. C++ 中的模板类声明头文件和实现文件分离后,如何能实现正常编译?

    C++ 中的模板类声明头文件和实现文件分离后,如何能实现正常编译? 这个feature叫做Export Template,即外名模板,它的作用在于使得模板代码可依照C/C++语言习惯,将模板声明和实现 ...

  2. HDU 1069 基础动态规划+排序

    题意 给出n种立方体石头 当且仅当一块石头的底部宽度长度都小于一块石头的时候才能放在上面 问最高能放多高?石头不限数目 然而同样一种石头采用同样的摆放方式 两快相同石头一定无法进行放置 所以 一块石头 ...

  3. Mysql时间函数

    http://blog.sina.com.cn/s/blog_6d39dc6f0100m7eo.html mysql中函数和关键字不区分大小写.下文函数的datetime参数处既可以用时间字符串也可以 ...

  4. UITableview cell 的多选

    利用NSMutableDictionary  key值 来改变cell的状态 -(void)createUI{ table = [[UITableView alloc]initWithFrame:CG ...

  5. java 时间戳和PHP时间戳 的转换

    java 时间戳和PHP时间戳 的转换 PHPJava  总结一下java 时间戳和PHP时间戳 的转换问题: 由于精度不同,导致长度不一致,直接转换错误. JAVA时间戳长度是13位,如:12948 ...

  6. oracle 嵌套表

    --自定义对象 CREATE OR REPLACE TYPE Fas_checksheetinfo_line_obj AS OBJECT(  CSID_ID           VARCHAR2(32 ...

  7. yii1.1.3主从(多从)、读写分离配置

    从新配置main.php片段 代码如下 ----------------------------------------------------------- 'db'=>array( 'con ...

  8. Http请求工具

    package cn.com.test; import java.io.BufferedReader; import java.io.IOException; import java.io.Input ...

  9. xcode8继续愉快的使用插件

    https://github.com/inket/update_xcode_plugins https://github.com/fpg1503/MakeXcodeGr8Again xcode8增加了 ...

  10. [LeetCode]题解(python):081 - Search in Rotated Sorted Array II

    题目来源 https://leetcode.com/problems/search-in-rotated-sorted-array-ii/ Follow up for "Search in ...