UIImagePickerController的用法

在实际的APP开发中,我们经常会见到应用的这样的功能 :需要选取手机相册的照片,还有选取视频,拍视频和照相的操作.

在iOS开发中,实现以上的功能就需要用到 UIImagePickerController.

现将 UIImagePickerController的基本用法总结如下 :

  1 #import "ViewController.h"
  2
  3 @interface ViewController ()<UIImagePickerControllerDelegate,UINavigationControllerDelegate>
  4
  5 //拍照
  6 - (IBAction)takePhoto:(id)sender;
  7
  8 //拍电影
  9 - (IBAction)takeMovie:(id)sender;
 10
 11 @property (weak, nonatomic) IBOutlet UIImageView *imgView;
 12
 13 //选择照片
 14 - (IBAction)selectPhoto:(id)sender;
 15
 16 //选择视频
 17 - (IBAction)selectVideo:(id)sender;
 18
 19
 20 @end
 21
 22 @implementation ViewController
 23
 24 - (void)viewDidLoad {
 25     [super viewDidLoad];
 26
 27     //UIImagePickerController.访问用户相册 2.拍照,拍视频
 28
 29 }
 30
 31 //1.选取照片
 32 - (IBAction)selectPhoto:(id)sender {
 33
 34     UIImagePickerController *imagePickerCtrl = [[UIImagePickerController alloc] init];
 35
 36     /*
 37     UIImagePickerControllerSourceTypePhotoLibrary,获取相册中所有的文件
 38     UIImagePickerControllerSourceTypeCamera,摄像头
 39     UIImagePickerControllerSourceTypeSavedPhotosAlbum,系统内置相册
 40      */
 41
 42     //资源类型(资源来自哪里,可以来相册,摄像头)
 43     imagePickerCtrl.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
 44
 45     //设置代理
 46     imagePickerCtrl.delegate = self;
 47
 48     //弹出控制器
 49     [self presentViewController:imagePickerCtrl animated:YES completion:^{
 50
 51         //弹出控制器完成调用的方法
 52     }];
 53
 54 }
 55 /**
 56  *
 57  * 2.选取视频
 58  */
 59 - (IBAction)selectVideo:(id)sender {
 60
 61      UIImagePickerController *imagePickerCtrl = [[UIImagePickerController alloc] init];
 62
 63     imagePickerCtrl.sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum;
 64     imagePickerCtrl.delegate = self;
 65
 66     //指定媒体类型,图片(@"public.image"),视频(@"public.movie")
 67     imagePickerCtrl.mediaTypes = @[/*@"public.image",*/@"public.movie"];
 68
 69     [self presentViewController:imagePickerCtrl animated:YES completion:NULL];
 70
 71
 72 }
 73
 74 //3.拍照
 75 - (IBAction)takePhoto:(id)sender {
 76
 77     UIImagePickerController *imagePickerCtrl = [[UIImagePickerController alloc] init];
 78
 79     imagePickerCtrl.delegate = self;
 80
 81     //判断手机是否支持(前)摄像头
 82     if (![UIImagePickerController isCameraDeviceAvailable:UIImagePickerControllerCameraDeviceFront]) {
 83
 84         UIAlertView *alerView = [[UIAlertView alloc] initWithTitle:@"提示" message:@"手机太渣,没有摄像头" delegate:nil cancelButtonTitle:@"确定" otherButtonTitles:nil, nil];
 85         [alerView show];
 86
 87         return;
 88     }
 89
 90     //指定资源来自摄像头
 91     imagePickerCtrl.sourceType = UIImagePickerControllerSourceTypeCamera;
 92
 93     [self presentViewController:imagePickerCtrl animated:YES completion:NULL];
 94
 95
 96 }
 97
 98 //4.拍视频
 99 - (IBAction)takeMovie:(id)sender {
100
101     UIImagePickerController *imagePickerCtrl = [[UIImagePickerController alloc] init];
102
103     imagePickerCtrl.delegate = self;
104
105     //指定资源来自摄像头
106     imagePickerCtrl.sourceType = UIImagePickerControllerSourceTypeCamera;
107
108     //设置资源类型
109     imagePickerCtrl.mediaTypes = @[@"public.movie"];
110
111     [self presentViewController:imagePickerCtrl animated:YES completion:NULL];
112 }
113
114 #pragma mark UIImagePickerControllerDelegate
115 //选取完视频,或者照片调用的协议方法(不管是拍照,选相册,拍视频,选视频,最终都会调用此方法)
116 - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
117
118     NSLog(@"%@",info);
119
120     //取出选择的照片
121     UIImage *img = info[UIImagePickerControllerOriginalImage];
122
123     //将选取的照片交给_imgView显示
124     _imgView.image = img;
125
126
127     //如果资源来自摄像头
128     if (picker.sourceType == UIImagePickerControllerSourceTypeCamera) {
129
130         //将图片存到相册中调用的方法  (苹果建议的写法:好像必须要这样写)
131         //- (void)image:(UIImage *)image didFinishSavingWithError:(NSError *)error contextInfo:(void *)contextInfo
132
133         UIImageWriteToSavedPhotosAlbum(img, self, @selector(image:didFinishSavingWithError:contextInfo:), nil);
134     }
135
136     //如果选中的是视频则可以通过UIImagePickerControllerMediaURL在字典中获取到选中的视频的URL
137
138     //选取照片或视频后,关闭控制器
139     [picker dismissViewControllerAnimated:YES completion:NULL];
140
141 }
142
143 //"取消"按钮被点击
144 - (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker {
145
146     NSLog(@"被关闭了");
147     [picker dismissViewControllerAnimated:YES completion:NULL];
148
149 }
150
151 - (void)image:(UIImage *)image didFinishSavingWithError:(NSError *)error contextInfo:(void *)contextInfo{
152
153     NSLog(@"照片保存到相册成功");
154 }
155
156 @end

这种写法的缺点就是,选取图片的时候只能选取一张照片,如果要选取多张照片的话,就需要用到另外一种方法  AssetsLibrary

AssetsLibrary的基本用法随后更新!!!    记得关注我哟!!!!

时间: 2024-10-24 17:19:59

UIImagePickerController的用法的相关文章

iOS UIImagePickerController的用法

1.UIImagePickerController的静态方法: imagepicker = [[UIImagePickerController alloc]init];    //UIImagePickerController静态方法判断设备是否支持照相机/图片库/相册功能    /*     typedef NS_ENUM(NSInteger, UIImagePickerControllerSourceType) {     UIImagePickerControllerSourceTypeP

给iOS开发新手送点福利,简述UIImagePickerController的属性和用法

1.+(BOOL)isSourceTypeAvailable:(UIImagePickerControllerSourceType)sourceType;         // 检查指定源是否在设备上可用. [UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary];  //检查照片源是否可用 2.allowsEditing 默认NO 是否允许编辑 [imagePick

简述UIImagePickerController的属性和用法

1.+(BOOL)isSourceTypeAvailable:(UIImagePickerControllerSourceType)sourceType;         // 检查指定源是否在设备上可用. [UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary];  //检查照片源是否可用 2.allowsEditing 默认NO 是否允许编辑 [imagePick

UIImagePickerController简单使用

UIImagePickerController用于管理可自定义的,系统支持的用于获取设备上图片和视频的用户界面.同时可以用于在App中选择存储的图片和视频.一个UIImagePickerController管理用户交互并且将这些交互结果传递给一个代理对象.该类不能被继承和修改,除了自定义cameraOverlayView外. UIVideoEditorController Media Capture and Access to Camera; 先简单讲解下UIImagePickerControl

js中获取时间new date()的用法

js中获取时间new date()的用法 获取时间:   var myDate = new Date();//获取系统当前时间 获取特定格式的时间: 1 myDate.getYear(); //获取当前年份(2位) 2 myDate.getFullYear(); //获取完整的年份(4位,1970-????) 3 myDate.getMonth(); //获取当前月份(0-11,0代表1月) 4 myDate.getDate(); //获取当前日(1-31) 5 myDate.getDay();

20.5 Shell脚本中的逻辑判断;20.6 文件目录属性判断;20.7 if特殊用法;20.8 20.9 cace判断(上下)

扩展: select用法 http://www.apelearn.com/bbs/thread-7950-1-1.html 20.5 Shell脚本中的逻辑判断 格式1:if 条件 ; then 语句; fi 1. 创建if1.sh测试脚本: [[email protected] ~]# vi if1.sh a=5,如果a大于3,满足这个条件,显示ok 添加内容: #!/bin/bash a=5 if [ $a -gt 3 ] then echo ok fi 2. 执行if1.sh脚本: [[e

20.1 Shell脚本介绍;20.2 Shell脚本结构和执行;20.3 date命令用法;20.4 Shell脚本中的变量

20.1 Shell脚本介绍 1. shell是一种脚本语言 aming_linux blog.lishiming.net 2. 可以使用逻辑判断.循环等语法 3. 可以自定义函数 4. shell是系统命令的集合 5. shell脚本可以实现自动化运维,能大大增加我们的运维效率 20.2 Shell脚本结构和执行 1. 开头(首行)需要加: #!/bin/bash 2. 以#开头的行作为解释说明: 3. 脚本的名字以.sh结尾,用于区分这是一个shell脚本 4. 执行.sh脚本方法有两种:

shell 中seq的用法 echo -n用法

用法:seq [选项]... 尾数 或:seq [选项]... 首数 尾数 或:seq [选项]... 首数 增量 尾数 从1循环到100的两种方法(bash 其它的shell没试过)for x in `seq 1 100`;do echo $x;donefor x in {1..100};do echo $x;done echo -n 不换行输出 $echo -n "123" $echo "456" 最终输出 123456 echo -e 处理特殊字符 若字符串中

sudo的用法

su -l user -C 'COMMAND' 是用user这个用户执行命令 我们一般使用sudo 这个命令 sudo [-u] user COMMAND sudo [-k] COMMAND 清除此前用户的密码. sudo的配置文件/etc/sudoers 配置项为 users    hosts=(runas)    commands users:可以是一个用户的名称也可以是一个组,也可以是一个别名 username #UID user_alias 用户别名的用法 User_Alias NETA