UIImagePickerController的使用

摘要:
字典中的键:1234567NSString*constUIImagePickerControllerMediaType;指定用户选择的媒体类型NSString*constUIImagePickerControllerOriginalImage;原始图像NSString*constUIImagePickerControllerEditedImage;修改图像NSString*constUIImagePickerControllerCropRect;裁剪大小NSString*constUIImagePickerControllerMediaURL;URL NSString*constUIImagePickerControllerReferenceURL媒体;原始文件的URL NSString*constUIImagePickerControllerMediaMetadata;此值仅在数据源为相机时有效。有关UIImagePickerController的更多参数,请参阅此处。有关代理中的功能,请参阅此处。

iOS 获取图片有三种方法:

1. 直接调用摄像头拍照

2. 从相册中选择

3. 从图库中选择

UIImagePickerController 是系统提供的用来获取图片和视频的接口;

用UIImagePickerController 类来获取图片视频,大体分为以下几个步骤:

1. 初始化UIImagePickerController 类;

2. 设置UIImagePickerController 实例的数据来源类型(下面解释);

3. 设置设置代理;

4. 如果需要做图片修改的话设置allowsEditing =yes。

数据来源类型一共有三种:

1
2
3
4
5
enum {
   UIImagePickerControllerSourceTypePhotoLibrary ,//来自图库
   UIImagePickerControllerSourceTypeCamera ,//来自相机
   UIImagePickerControllerSourceTypeSavedPhotosAlbum //来自相册
};

在用这些来源的时候最好检测以下设备是否支持;

1
2
3
4
5
6
7
8
9
10
11
12
 if([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera])
    {
        NSLog(@"支持相机");
    }
    if([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary])
    {
        NSLog(@"支持图库");
    }
    if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeSavedPhotosAlbum])
    {
        NSLog(@"支持相片库");
    }

调用摄像头来获取资源

1
2
3
4
5
6
7
8
9
- (void)viewDidLoad {
    [super viewDidLoad];
    picker = [[UIImagePickerController alloc]init];
    picker.view.backgroundColor = [UIColor orangeColor];
    UIImagePickerControllerSourceType sourcheType = UIImagePickerControllerSourceTypeCamera;
    picker.sourceType = sourcheType;
    picker.delegate = self;
    picker.allowsEditing = YES;
}

上面只是实例了UIImagePickerController及其属性 在需要获取图片的时候需要弹出窗口调用

1
[self presentViewController:picker animated:YES completion:nil];

我们还需要代理来获取我们选中的图片

1
UIImagePickerControllerDelegate

代理中一共三个方法 其中一个3.0 已经废弃了,只剩下两个我们需要用的

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

当用户选取完成后调用;

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

当用户取消选取时调用;

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

选取的信息都在info中,info 是一个字典。

字典中的键:

1
2
3
4
5
6
7
NSString *const  UIImagePickerControllerMediaType ;指定用户选择的媒体类型(文章最后进行扩展)
NSString *const  UIImagePickerControllerOriginalImage ;原始图片
NSString *const  UIImagePickerControllerEditedImage ;修改后的图片
NSString *const  UIImagePickerControllerCropRect ;裁剪尺寸
NSString *const  UIImagePickerControllerMediaURL ;媒体的URL
NSString *const  UIImagePickerControllerReferenceURL ;原件的URL
NSString *const  UIImagePickerControllerMediaMetadata;当来数据来源是照相机的时候这个值才有效

UIImagePickerController 的更多参数参考这里

代理中的功能参考这里

UIImagePickerControllerMediaType 包含着KUTTypeImage 和KUTTypeMovie

KUTTypeImage 包含:

1
2
3
4
5
6
7
8
9
10
11
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 包含:

1
2
3
4
5
6
7
8
9
10
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;
 
 

免责声明:文章转载自《UIImagePickerController的使用》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇iOS经典面试题iOS一些简单的开发技巧下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

仿闲鱼的搜索历史遇到的一些问题

在模仿闲鱼的搜索历史中,需要将结果保存在本地,并且有如下要求:①搜索结果倒序展示,即最新的搜索结果展示在最上边②搜索结果不能重复③最多存储10条本地存储需要用到FMDB,先说下其它的 1.使用FMDB时,真机上提示error opening!: 14错误问题该问题是模拟器上一切正常,可以正常的添加、删除数据。数据库表路径为 NSString *file =...

OC第二节 —— NSString和NSMutableString

1.为什么需要NSString对象 答:在OC中创建字符串时,一般不使用C的方法,因为C将字符串作为字符数组,所以在操作时会有很多不方便的地方,在Cocoa中NSString集成的一些方法,可以很方便的操作字符串, 2.oc中字符串和c语言字符串的对比“hello world”@“hello world” 1)输出方式 %@2)引用方式NSString以@符...

UIWebView获取所点位置图片URL

原文:http://blog.csdn.net/favormm/article/details/6614441中有可能不触发action方法,本人稍作改动。 UIWebView有自己的UIResgure,如果我们手动加入自己的GestureRecognize将不能识别,如UILongPressGestureRecongnizer. 在浏览网页的时候,如果看到...

iOS 三方库fmdb 的使用

使用fmdb 做本地数据的存储非常方便, 1. github 上搜索fmdb 下载压缩包 导入到工程中 (如果你的mac 有cocoapod 也可以直接通过cocoapod 添加) 2. 以下代码是通过fmdb 多数据库的各种操作,其中有几点需要注意:(1). 程序中 Ceasar 是表名 (2). 修改数据库数据 提前准备字符串时 值 要用单引号括起来...

Objective-C 学习笔记(Day 2)

———————————————————————————————————————————如何根据题目准确完整清晰的声明一个类并实现给定的行为/*//下面这个程序教大家如何根据题目去声明一个类,并完成题目中描述的行为。如何让代码表示的准确清晰。类名:Person属性:年龄(_age)、体重(_weight)动作:吃饭(eat)方法、散步(walk)方法功能:人可...

iOS数据持久化的方式

概论 所谓的持久化,就是将数据保存到硬盘中,使得在应用程序或机器重启后可以继续访问之前保存的数据。在iOS开发中,有很多数据持久化的方案,接下来我将尝试着介绍一下5种方案: plist文件(属性列表) preference(偏好设置) NSKeyedArchiver(归档) SQLite 3 CoreData 沙盒 在介绍各种存储方法...