iOS中UIImagePickerController图片选取器的用法小结

所属分类: 软件编程 / IOS 阅读数: 415
收藏 0 赞 0 分享

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

先简单讲解下UIImagePickerController的一些属性,再上代码。

一、常用属性

(1)sourceType 控制器展示的选择界面的类型,

包含三个枚举值

复制代码 代码如下:

enum {
   UIImagePickerControllerSourceTypePhotoLibrary,      //在图片库中选取图片或者视频
   UIImagePickerControllerSourceTypeCamera,            //用于拍摄照片或视频
   UIImagePickerControllerSourceTypeSavedPhotosAlbum   //在相册中选取图片或视频
};
typedef NSUInteger UIImagePickerControllerSourceType;

(2)mediaTypes

默认值是kUTTypeImage,意味着用户只能选择静态图片或者拍摄静态图片(相对于视频)

当mediaTypes设置为kUTTypeImage,kUTTypeMovie(设备支持的话)时,操作图片的同时,可以选择操作视频。

使用KUTTypeImage,KUTTypeMovie时,需导入#import <MobileCoreServices/MobileCoreServices.h>

(3)allowEditing

用户是否可以修改图片或视频,默认是NO

(3)cameraOverlayView

在默认图片选择界面的最前面显示。

二、基本用法

(1)使用isSourceTypeAvailable:来判断当前设备是否支持该SourceType

(2)若支持,使用availableMediaTypesForSourceType来检验当前SourceType下支持的mediaTypes

(3)若需要调整mediaTypes(默认是kUTTypeImage),调整

(4)展示界面,使用modal方式弹出。

(5)当用户操作完成(cancel或者选着了某张图片和某个视频),代理会触发方法,然后关闭界面并进行相关的处理。

三、其他两种sourceType详解

其他两种sourceType使用方式较为单一,下面详细讲解下当SourceType为UIImagePickerControllerSourceTypeCamera时的情况。

常见属性:

(1)videoQuality:用于设置视频的质量,默认值为UIImagePickerControllerQualityTypeMedium.

用于拍摄视频和选着视频,如果选择已经存在的视频,且该视频的质量高于设置的videoQuality,则视频会被转为低质量的

(如果存在的视频地狱videoQuality呢)

(2)videoMaximumDuration 最大的视频时间,默认为10分钟

(3)cameraViewTransform

‍这几个属性只在camera下可用

(4)cameraDevice

复制代码 代码如下:

enum {
   UIImagePickerControllerCameraDeviceRear,  //后置摄像头
   UIImagePickerControllerCameraDeviceFront  //前置摄像头
};
typedef NSUInteger UIImagePickerControllerCameraDevice;

(5)cameraCaptureMode

开启照相界面的时候选择的模式

复制代码 代码如下:

enum {
   UIImagePickerControllerCameraCaptureModePhoto,  //默认使用拍照模式
   UIImagePickerControllerCameraCaptureModeVideo   //默认使用摄像模式
};
typedef NSUInteger UIImagePickerControllerCameraCaptureMode;

(6)cameraFlashMode

闪光灯

复制代码 代码如下:

enum {
   UIImagePickerControllerCameraFlashModeOff  = -1,
   UIImagePickerControllerCameraFlashModeAuto = 0,
   UIImagePickerControllerCameraFlashModeOn   = 1
};

typedef NSInteger UIImagePickerControllerCameraFlashMode;


四、两个主要的委托方法实例
复制代码 代码如下:

// 用户选中图片之后的回调
- (void)imagePickerController: (UIImagePickerController *)picker didFinishPickingMediaWithInfo: (NSDictionary *)info 

    if (picker == picker_camera_)  
    { 
        //如果是 来自照相机的image,那么先保存 
        UIImage* original_image = [info objectForKey:@"UIImagePickerControllerOriginalImage"]; 
    }

// info dictionary keys
UIKIT_EXTERN NSString *const UIImagePickerControllerMediaType;      // an NSString (UTI, i.e. kUTTypeImage)
UIKIT_EXTERN NSString *const UIImagePickerControllerOriginalImage;  // a UIImage
UIKIT_EXTERN NSString *const UIImagePickerControllerEditedImage;    // a UIImage
UIKIT_EXTERN NSString *const UIImagePickerControllerCropRect;       // an NSValue (CGRect)
UIKIT_EXTERN NSString *const UIImagePickerControllerMediaURL;       // an NSURL
UIKIT_EXTERN NSString *const UIImagePickerControllerReferenceURL    NS_AVAILABLE_IOS(4_1);  // an NSURL that references an asset in the AssetsLibrary framework
UIKIT_EXTERN NSString *const UIImagePickerControllerMediaMetadata   NS_AVAILABLE_IOS(4_1);  // an NSDictionary containing metadata from a captured photo


    // 获得编辑过的图片 
    UIImage* image = [info objectForKey: @"UIImagePickerControllerEditedImage"]; 

    // 把图片转成NSData类型的数据来保存文件(存入到沙盒中) 
    NSData *imageData; 

    // 判断图片是不是png格式的文件 
    if (UIImagePNGRepresentation(image)) { 

        // 返回为png图像。 
        imageData = UIImagePNGRepresentation(image);

    }else { 

       // 返回为JPEG图像
        imageData = UIImageJPEGRepresentation(image, 1.0); 

    }

    // 路径拼接,写入-----
    NSString * imageSavePath = [[[HMTMySqliteDataHandle shareInstance]saveImagesPath] stringByAppendingPathComponent:@"自定义.自定义"];

    [imageData writeToFile:imageSavePath atomically:YES]; 

    // 关闭相册界面  
    [self dismissModalViewControllerAnimated:YES]; 
    [picker release]; 
}

// 用户选择取消 
- (void) imagePickerControllerDidCancel: (UIImagePickerController *)picker 

    // 关闭相册界面
    [self dismissModalViewControllerAnimated:YES]; 
    [picker release]; 
}  

更多精彩内容其他人还在看

iOS中UIActivityIndicatorView的用法及齿轮等待动画实例

UIActivityIndicatorView活动指示器最常见的用法便是用来制作那个程序中的齿轮转动的等待效果,接下来我们回来简单整理iOS中UIActivityIndicatorView的用法及齿轮等待动画实例:
收藏 0 赞 0 分享

iOS中的UIStepper数值加减器用法指南

UIStepper可以有许多应用场景,比如在购物应用中制作按钮对购买商品的数量进行增或减,下面我们就一起来看看iOS中的UIStepper数值加减器用法指南
收藏 0 赞 0 分享

iOS中UIImagePickerController图片选取器的用法小结

UIImagePickerController平时就是用来做应用中从相册中选取图片功能的,这里我们就来整理一下iOS中UIImagePickerController图片选取器的用法小结,需要的朋友可以参考下
收藏 0 赞 0 分享

iOS中的UITextView文字输入光标使用技巧小结

UITextView在用户体验方面有着十分明显的作用,包括键盘的呼出及文字的选择等,接下来就来整理给出一份iOS中的UITextView文字输入光标使用技巧小结,需要的朋友可以参考下
收藏 0 赞 0 分享

iOS中UIWebView网页加载组件的基础及使用技巧实例

UIWebView是开发中很常用的应用内调用网页浏览的控件,这里整理了一些iOS中UIWebView网页加载组件的基础及使用技巧实例 ,需要的朋友可以参考下
收藏 0 赞 0 分享

IOS CoreAnimation中layer动画闪烁的解决方法

这篇文章主要为大家详细介绍了IOS CoreAnimation中layer动画闪烁的原因,分享了layer动画闪烁的解决方法,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

iOS开发之视图切换

在iOS开发中视图的切换是很频繁的,独立的视图应用在实际开发过程中并不常见,除非你的应用足够简单。在iOS开发中常用的视图切换有三种,今天我们将一一介绍,希望大家能够喜欢。
收藏 0 赞 0 分享

iOS程序开发中设置UITableView的全屏分隔线的方法(不画线)

ableView是app开发中常用到的控件,功能很强大,多用于数据的显示。下面给大家介绍设置UITableView的全屏分隔线的两种方法
收藏 0 赞 0 分享

iOS开发之触摸事件

iOS设备都是可以多点触摸的,是指手指放在iOS设备的屏幕上从屏幕上拖动或抬起。系统当前视图响应触摸事件,若无响应则向上层传递,构成响应者链。触摸事件的函数有4个。
收藏 0 赞 0 分享

iOS开发之tableView点击下拉扩展与内嵌collectionView上传图片效果

这篇文章主要介绍了iOS开发之tableView点击下拉扩展与内嵌collectionView上传图片效果的相关资料,需要的朋友可以参考下
收藏 0 赞 0 分享
查看更多