UIImagePickerController

UIImagePickerController可以帮助我们调用摄像头拍照或者希望从相册中选择照片。

UIImagePickerController主要属性

// 图片获取来源
@property(nonatomic) UIImagePickerControllerSourceType sourceType;// 拍完照或相册选择图片后,是否允许编辑图像
@property(nonatomic) BOOL allowsEditing;// 媒体类型,public.image和public.movie,默认是public.image
@property(nonatomic,copy) NSArray<NSString *> *mediaTypes;// 代理设置,获取图片
@property(nullable,nonatomic,weak) id <UINavigationControllerDelegate, UIImagePickerControllerDelegate> delegate;

UIImagePickerControllerSourceType表示图片获取来源

typedef NS_ENUM(NSInteger, UIImagePickerControllerSourceType) {UIImagePickerControllerSourceTypePhotoLibrary, // 照片库UIImagePickerControllerSourceTypeCamera, // 相机UIImagePickerControllerSourceTypeSavedPhotosAlbum, // 相册
}

相机相关属性

// 是否显示相机控制按钮,默认是YES
@property(nonatomic) BOOL showsCameraControls;// 自定义相机控制页面
@property(nullable, nonatomic,strong) UIView *cameraOverlayView;// 拍摄照片还是视频,默认是UIImagePickerControllerCameraCaptureModePhoto
typedef NS_ENUM(NSInteger, UIImagePickerControllerCameraCaptureMode) {UIImagePickerControllerCameraCaptureModePhoto,UIImagePickerControllerCameraCaptureModeVideo
};
@property(nonatomic) UIImagePickerControllerCameraCaptureMode cameraCaptureMode;// 摄像头,默认是UIImagePickerControllerCameraDeviceRear
typedef NS_ENUM(NSInteger, UIImagePickerControllerCameraDevice) {UIImagePickerControllerCameraDeviceRear,UIImagePickerControllerCameraDeviceFront
};
@property(nonatomic) UIImagePickerControllerCameraDevice cameraDevice;// 闪光灯模式,默认是UIImagePickerControllerCameraFlashModeAuto
typedef NS_ENUM(NSInteger, UIImagePickerControllerCameraFlashMode) {UIImagePickerControllerCameraFlashModeOff  = -1,UIImagePickerControllerCameraFlashModeAuto = 0,UIImagePickerControllerCameraFlashModeOn   = 1
};
@property(nonatomic) UIImagePickerControllerCameraFlashMode cameraFlashMode; // 录像最大时间,默认为十分钟
@property(nonatomic) NSTimeInterval videoMaximumDuration;// 录像像素
typedef NS_ENUM(NSInteger, UIImagePickerControllerQualityType) {UIImagePickerControllerQualityTypeHigh = 0,       // highest qualityUIImagePickerControllerQualityTypeMedium = 1,     // medium quality,默认UIImagePickerControllerQualityTypeLow = 2,        // lowest qualityUIImagePickerControllerQualityType640x480 = 3,    // VGA qualityUIImagePickerControllerQualityTypeIFrame1280x720 = 4,UIImagePickerControllerQualityTypeIFrame960x540 = 5,
}
@property(nonatomic) UIImagePickerControllerQualityType videoQuality;

UIImagePickerController主要方法

// 判断设备是否支持照片库/相机/相册
+ (BOOL)isSourceTypeAvailable:(UIImagePickerControllerSourceType)sourceType; // 判断设备照片库/相机/相册支持的媒体类型
+ (nullable NSArray<NSString *> *)availableMediaTypesForSourceType:(UIImagePickerControllerSourceType)sourceType;// 判断设备是否支持前置摄像头/后置摄像头
+ (BOOL)isCameraDeviceAvailable:(UIImagePickerControllerCameraDevice)cameraDevice;// 判断设备前置摄像头/后置摄像头是否支持闪光灯
+ (BOOL)isFlashAvailableForCameraDevice:(UIImagePickerControllerCameraDevice)cameraDevice;// 判断设备前置摄像头/后置摄像头是否支持拍照/视频
+ (nullable NSArray<NSNumber *> *)availableCaptureModesForCameraDevice:(UIImagePickerControllerCameraDevice)cameraDevice;// 拍照
- (void)takePicture// 开始录像
- (BOOL)startVideoCapture;// 停止录像
- (void)stopVideoCapture;

UIImagePickerController功能

从照片库获取图片

UIImagePickerController *vc = [[UIImagePickerController alloc] init];
vc.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
vc.allowsEditing = YES;
vc.delegate = self;[self presentViewController:vc animated:YES completion:nil];

自拍

UIImagePickerController *vc = [[UIImagePickerController alloc] init];
vc.sourceType = UIImagePickerControllerSourceTypeCamera;
vc.cameraDevice = UIImagePickerControllerCameraDeviceFront;
vc.delegate = self;[self presentViewController:vc animated:YES completion:nil];

录像

UIImagePickerController *vc = [[UIImagePickerController alloc] init];
vc.sourceType = UIImagePickerControllerSourceTypeCamera;
vc.mediaTypes = @[@"public.movie"];
vc.delegate = self;[self presentViewController:vc animated:YES completion:nil];

UIImagePickerControllerDelegate

UIImagePickerControllerDelegate代理协议提供了用户选择图片后的回调方法

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary<UIImagePickerControllerInfoKey,id> *)info {UIImage *originalImage = [info objectForKey:UIImagePickerControllerOriginalImage];UIImage *editedImage = [info objectForKey:UIImagePickerControllerEditedImage];NSString *mediaType = [info objectForKey:UIImagePickerControllerMediaType];NSURL *mediaURL = [info objectForKey:UIImagePickerControllerMediaURL];if ([@"public.image" isEqualToString:mediaType]) {if (editedImage) {self.pickerImageView.image = editedImage;} else {self.pickerImageView.image = originalImage;}} else if ([@"public.movie" isEqualToString:mediaType]) {}[picker dismissViewControllerAnimated:YES completion:nil];
}- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker {    [picker dismissViewControllerAnimated:YES completion:nil];
}

info包含了采集的图片/视频信息

// 媒体类型
UIImagePickerControllerInfoKey const UIImagePickerControllerMediaType;
// 原始的UIImage
UIImagePickerControllerInfoKey const UIImagePickerControllerOriginalImage;
// 编辑后的UIImage
UIImagePickerControllerInfoKey const UIImagePickerControllerEditedImage;
// 编辑裁剪区域
UIImagePickerControllerInfoKey const UIImagePickerControllerCropRect;
// 视频文件链接
UIImagePickerControllerInfoKey const UIImagePickerControllerMediaURL;

权限

需要在Info.plist文件中,添加相机、相册和麦克风权限

源码下载: https://github.com/nai-chen/IosBlog

iOS 图像选取器UIImagePickerController相关推荐

  1. IOS学习六:Date Picker, Picker View选取器控件初步

    Date Picker控件和Picker View控件其实也是算比较常用到视图. 以下根据红柚子上得几个例子: 分别从(日期选取器)Date Picker   -->单部件选取器-->多部 ...

  2. iOS键盘、选取器上的工具栏

    前言 我们在使用键盘的时候,在打字完毕后想要收起键盘继续操作,要么是习惯性点击界面空白处收起键盘,要么是在键盘上方点击一个"完成"之类的按钮来收起键盘.在Android上键盘的完成 ...

  3. UIDatePicker 日期/时间选取器(滚轮)—IOS开发

    UIDatePicker 是一个控制器类,封装了 UIPickerView,但是他是UIControl的子类,专门用于接受日期.时间和持续时长的输入.日期选取器的各列会按照指定的风格进行自动配置,这样 ...

  4. UIPickerView 选取器(滚轮)—IOS开发

    选取器被用来取代PC上面的下拉菜单,它是一个大大的滚轮,它占用固定的大小 320×216. 一.创建 大小虽然固定,但是位置可以任意(不过横向被充满,咱也只能改变纵向位置).与UItableView ...

  5. jquery颜色转换html,jQuery颜色选取器插件COLPICK

    插件描述:简单 RGB.HSB.十六进制颜色选取器 jQuery 插件 没有图像 !只是 JS 和 CSS 文件 非常直观类似 Photoshop 的界面 光明和黑暗很容易自定义 CSS3 外观 28 ...

  6. ios图像和图形最佳实践(三)

    没有前面进度的同学还是从(二)开始,否则会感觉比较突兀 ios图像和图形最佳实践(二) - 对于我们的app所附带的图片 苹果强烈建议我们使用图像素材来存储 这其中有很多原因 图像素材针对基于名称和基 ...

  7. mac图像查看器EdgeView for Mac

    EdgeView for Mac是一个非常简单易用的但功能强大的图像查看器,有了EdgeView for Mac您可以打开任何各种的图像,并在它内置的文件浏览器里面打开zip和rar等文件,不需要进行 ...

  8. Qt6 QML Book/QtQuick控件/图像查看器

    An Image Viewer 图像查看器 Let's look at a larger example of how Qt Quick Controls are used. For this, we ...

  9. ios+html5+选取照片,iOS 自定义图片选择器 1 - PhotoKit

    [ 写在前面:笔者按照Instagram的图片选取器写了个小Demo, 该系列文章为笔者实现Demo的步骤,若有不正确的地方还望指出来,共同学习. 地址在最后] iOS开发者对于图片选择器不会感到陌生 ...

最新文章

  1. 【Webview相关问题】登陆失败之cookie陷阱
  2. 机器学习知识点(二十七)先验概率和后验概率理解
  3. ios 添加浮动效果_iOS实现拖拽View跟随手指浮动效果
  4. STM32开发 -- cannot open source input file absacc.h 解决方法
  5. 从STGW流量下降探秘内核收包机制
  6. Ubuntu 16.04 安装第三方Apps Can’t Install Third-Party Apps on Ubuntu 16.04? You’re No
  7. 特征做得好,模型没烦恼
  8. qq语音按住ctrl就静音怎么解决_绝地求生大逃杀:语音故障的解决办法
  9. is_numeric 检测变量是否为数字或数字字符串
  10. 什么是Bootstrap?
  11. eBay把平台更新为Kubernetes、Envoy和Kafka:计划开源硬件和软件
  12. Parse分析之 -- Enum.Parse
  13. Java基础学习之画板1
  14. VMP学习笔记之壳基础(一)
  15. 小白能读懂的 《手把手教你学DSP(TMS320X281X)》第七章 CPU定时器
  16. SVN:本地项目与SVN项目进行关联
  17. 2022华为机试真题 C++ 实现【最大股票收益】
  18. 论文写作中文核心期刊查询和中图检索号查询
  19. 顺序表的基本操作(含全部代码c)
  20. 编译内核使tilera支持网桥和netfilter功能

热门文章

  1. 高端知识星球正式开放了
  2. 我学会了用计算机作文,我学会了作文(15篇)
  3. python 爬虫-养生之道
  4. 超简单集成华为HMS Core MLKit通用卡证识别SDK,一键实现各种卡绑定
  5. 善于计划,善于总结,善于归纳
  6. Java的小tips(1) ------关于“Java :找不到符号”类问题的解读
  7. 微信小程序开发者工具使用vant组件
  8. 单片机开发无线控制系列-手机无线超声波测距
  9. 【Excel】用公式提取Excel单元格中的汉字
  10. 名帖332 王献之 草书《鸭头丸帖》