UIImagePickerController
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的更多相关文章
- 整理UIImagePickerController问题
[assetsLibrary addAssetsGroupAlbumWithName:@"iOSDevTip1" resultBlock:^(ALAssetsGroup *grou ...
- ios基础篇(二十一)—— UIImagePickerController类
UIImagePickerController简述: UIImagePickerController 类是获取选择图片和视频的用户接口,我们可以用UIImagePickerController选择我们 ...
- UIImagePickerController和UIAlertController结合使用
在处理个人资料 - 头像的时候,通常有两个选项,一个是调用系统相机,一个是调用系统相册.这里要使用的就是UIImagePickerController方法. 在头像位置的imageView添加一个手势 ...
- UIImagePickerController的知识点
1.UIImagePickerController是系统提供的用来获取图片或视频的接口,使用UIImagePickerController类来获取图片的基本步骤如下: a.初始化UIImagePick ...
- UIImagePickerController在ios10环境一打开就crash的问题
在之前的系统环境下,UIImagePickerController都可以顺利打开.但是自从手机升级了ios10以后,每次打开相机和照片库都会直接崩溃. 通过google搜索找到StackOverflo ...
- IOS开发之小实例--使用UIImagePickerController创建一个简单的相机应用程序
前言:本篇博文是本人阅读国外的IOS Programming Tutorial的一篇入门文章的学习过程总结,难度不大,因为是入门.主要是入门UIImagePickerController这个控制器,那 ...
- 捉襟见肘之UIImagePickerController 和自定义照相机
目标:自拍并结合C++算法,识别人脸信息,第一步骤,调用相机并且自定义界面和转场效果 先复习一下 https://developer.apple.com/library/prerelease/tvos ...
- iOS摄像头和相册-UIImagePickerController常用操作
在一些应用中,我们需要用到iOS设备的摄像头进行拍照,视频.并且从相册中选取我们需要的图片或者视频. 关于iOS摄像头和相册的应用,可以使用UIImagePickerController类来完成控制. ...
- UIImagePickerController 获取相片视频
1.UIImagePickerController的静态方法: imagepicker = [[UIImagePickerController alloc]init]; //UIImagePic ...
- IOS开发UI基础UIImagePickerController的属性
UIImagePickerController 1.+(BOOL)isSourceTypeAvailable:(UIImagePickerControllerSourceType)sourceType ...
随机推荐
- zend framerwork2.X系列安装创建应用
1. 到https://github.com/zendframework/ZendSkeletonApplication下载zip包,解压到你服务器的根目录. 2. 打开windows的cmd,cd到 ...
- Jenkins+Maven+Svn搭建持续集成环境持续集成和自动部署
Jenkins和Hudson有很深的渊源,Jenkins目前更新频繁,目前选用Jenkins为持续集成工具和自动部署 Jenkins的使用有很多的介绍,主要记录如下要点: 192.168.1.240: ...
- vbaexcel
Sub WordTest() Dim objwordApp As Word.Application Dim objword As Word.Document Dim objSeheet As Stri ...
- mac终端中显示tree的命令
寻觅了良久终于找到了mac下如何在终端显示tree的命令了,作为从linux下转过来的人,还没适应mac的finder,还是喜欢在命令行下查看文件. 命令: find . -print | sed - ...
- 源码分析-mysql
问题: mysql GROUP BY 返回结果 各个字段所在行
- 关于C语言读取多行数据的问题
我有如下数据格式3360 2001 5 1750.5 1246.5 22.5 n 1775=1177-1316:13360 2001 5 1750.5 1 ...
- <from>;<input>;readonly:只读;disabled:不可用;checked:用来做选中;selected:用在下拉列表中,设置那一项被选中
表单元素: ①②③④⑤⑥⑦★ 一.<from> 1. 代表表单 2 . action:提交为哪个页面 method:① get :显示提交,由长度限制 ② post: 隐藏提交 二.文 ...
- UltraEdit 标签(tab)不见的3个解决办法
UltraEdit 标签(tab)不见的3个解决办法 2010-11-08 09:19 1042人阅读 评论(0) 收藏 举报 工具c 方法1:点 视图->视图/列表(V)->打开文件标签 ...
- 在VC6.0中编译头文件时产生moc文件
1.在FileView视图中 右键点击需要产生moc文件的头文件(就是类中包含Q_OBJECT宏,如果没有这个宏就不需要产生moc文件) 2.在右键菜单中选择Setting... 3.选择Custom ...
- php--linux环境下的主从复制
1.编辑数据库配置文件my.cnf,一般在/etc/目录下. #vi /etc/my.cnf 在[mysqld]的下面加入下面代码:[第一步查看本文件夹中代码是否已经存在,存在不需要进行添加] 只是修 ...