只支持单选
1.获取本地相册图片、视频
//设置代理
<
UIImagePickerControllerDelegate
,
UINavigationControllerDelegate
-------------------------------------------------
获取本地相册图片-----------------------------------------------
//
读取本地相册图片
- (
IBAction
)btn:(
UIButton
*)sender {
// 创建图片选择控制器 UIImagePickerController *imageP = [[ UIImagePickerController alloc ] init ]; // 设置代理 imageP. delegate = self ; // 设置类型 imageP. sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum ; // 模态跳转 [ self presentViewController :imageP animated : YES completion : nil ]; }
-------------------------------------------------
获取本地相册视频-----------------------------------------------
//
读取本地相册视频
- ( IBAction )movie:( UIButton *)sender { UIImagePickerController *movieP = [[ UIImagePickerController alloc ] init ]; movieP. delegate = self ; movieP. sourceType = UIImagePickerControllerSourceTypePhotoLibrary ; movieP. mediaTypes = @[ @"public.movie" ] ; [ self presentViewController :movieP animated : YES completion : nil ];
}
------------------------------------------------------
摄像头拍照----------------------------------------------------
//
使用摄像头拍视频
- ( IBAction )takeMovieAction:( id )sender { // 判断有木有摄像头 BOOL isCamera = [ UIImagePickerController isCameraDeviceAvailable : UIImagePickerControllerCameraDeviceRear ]; if (!isCamera) { UIAlertView *alertView = [[ UIAlertView alloc ] initWithTitle : @" 提示 " message : @" 当前设备没有摄像头可以使用 " delegate : nil cancelButtonTitle : @" 确定 " otherButtonTitles : nil , nil ]; [alertView show ]; return ; } UIImagePickerController *pickerCtrl = [[ UIImagePickerController alloc ] init ]; pickerCtrl. sourceType = UIImagePickerControllerSourceTypeCamera ; pickerCtrl. mediaTypes = @[ @"public.movie" ] ; [ self presentViewController :pickerCtrl animated : YES completion : nil ];
}
------------------------------------------------
重写点击相册图片资源调用的代理方法-------------------------------------
//
重写点击相册图片资源调用的代理方法
- ( void )imagePickerController:( UIImagePickerController *)picker didFinishPickingMediaWithInfo:( NSDictionary *)info {
//
取得媒体类型
NSString *type = info[ UIImagePickerControllerMediaType ]; // 分别判断拿到指定类型后做什么操作 if ([type isEqualToString : @"public.image" ]){ //info 是所点击的那张图片的信息,是个字典 NSLog ( @"%@" , info); // 用 key 取得这张图片 UIImage *img = [info objectForKey : UIImagePickerControllerOriginalImage ]; // 赋值给图片空间
_image
.
image
= img;
//
如果用户调用摄像头,保存相片到本地
if
(picker.
sourceType
==
UIImagePickerControllerSourceTypeCamera
)
{
//
将拍摄的照片保存到本地
UIImageWriteToSavedPhotosAlbum (img, self , @selector (image:didFinishSavingWithError:contextInfo:), nil );
}
}
else if ([type isEqualToString : @"public.movie" ]) { // 拿到视频 URL 就可以做一些操作了 NSURL *movieUrl = info[ UIImagePickerControllerReferenceURL ]; NSLog ( @"%@" , movieUrl); } // 并且跳转回来 [ self dismissViewControllerAnimated : YES completion : nil ];
}
#pragma mark -
相片保存完成后调用的代理方法
- ( void )image:( UIImage *)image didFinishSavingWithError:( NSError *)error contextInfo:( void *)contextInfo { NSLog ( @" 相片保存完成 " );
}
|
二、AssetsLibrary
系统的UIImagePickerController只能让用户选择单图片,而一般情况下,我们需要上传多张图片,这时应该可以同时选择多张图片,否则用户体验会很差。因此多图片选择器就诞生了。
在类库中,苹果为我们提供了一个AssetsLibrary.Framework的库,可以通过它获取设备里的图片和视频。在使用这个类库时,我们需要导入,且<AssetsLibrary/AssetsLibrary.h>。然后我们可以使用它来获取不同组的枚举。
|